質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1105閲覧

グレースケール画像の書き出し

CHO-883

総合スコア2

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/06/09 05:57

編集2021/06/09 06:34

前提・実現したいこと

初心者です.
一枚目の画像と二枚目の画像の変位量に応じてピクセルごとにグレースケールで塗りつぶすプログラムを作っています.
色の指定まではできたのですが,それを実際に画像に起こすところで詰まっています.どのようなプログラムを組めばできるでしょうか.

発生している問題・エラーメッセージ

TypeError: '<' not supported between instances of 'type' and 'float'

該当のソースコード

python

1import sys 2import cv2 3import numpy as np 4 5#参照画像大きさ 6h=3072 7w=4608 8c=3 9 10#X方向変位量の測定画像の箱 11xg_img=np.empty((h,w,3)) 12#Y方向変位量の測定画像の箱 13yg_img=np.empty((h,w,3)) 14 15#参照画像の縦分割数 16a=33#縦分割数 17b=33#横分割数 18 19#追加領域の幅 20k=20#縦追加領域 21v=20#横追加領域 22 23#座標指定(画像)と参照箱の指定 24ref_box=np.empty((int(h/a),int(w/b),3)) 25imref=cv2.imread('DSC_0087.JPG') 26for refY in range (int(h/(2*a)),int(h-(h/(2*a))),int(h/a)): 27 for refX in range (int(w/(2*b)),int(w-(w/(2*b))),int(w/b)): 28 z=(refX,refY) 29 ref_box=imref[int(refY-(h/(2*a))):int(refY+(h/(2*a))),int(refX-(w/(2*b))):int(refX+(w/(2*b)))] 30 31#座標指定(測定画像)と測定箱の指定 32mea_box=np.empty((int(h/a+2*k),int(w/b+2*v),3)) 33immea=cv2.imread("DSC_0088.JPG") 34for meaY in range (int(h/(2*a)),int(h-(h/(2*a))),int(h/a)): 35 for meaX in range (int(w/(2*b)),int(w-(w/(2*b))),int(w/b)): 36 z=(meaX,meaY) 37 mea_box=immea[int(meaY-(h/(2*a))-v):int(meaY+(h/(2*a))+v), int(meaX-(w/(2*b))-k):int(meaX+(w/(2*b))+k)] 38 39 40 41#テンプレートマッチングにより相互相関係数を計算 42sokan=cv2.matchTemplate(mea_box,ref_box,cv2.TM_CCOEFF_NORMED) 43 44#[-1,1]を[0,1]へ 45cv2.normalize(sokan,sokan,0,1,cv2.NORM_MINMAX) 46 47#相互相関係数の最小値・最大値とその座標を抽出 48#相関係数の最大値座標の検出 49pMax=cv2.minMaxLoc(sokan) 50 51#検出領域中心座標(mea_boxの左上が(0,0)となる)-----⓵ 52detect=(pMax[0]+meaX,pMax[1]+meaY) 53afterx=pMax[0]+meaX 54aftery=pMax[1]+meaY 55 56#変位量 57dx=afterx-refX 58dy=aftery-refY 59 60#変位量最大値 61dx_list=[dx] 62dy_list=[dy] 63dx_max=max(dx_list) 64dx_min=min(dx_list) 65dy_max=max(dy_list) 66dy_min=min(dy_list) 67 68#変位量を-1~1に変換 69if abs(dx_max)>=abs(dx_min): 70 j=abs(dx_max) 71else: 72 j=abs(dx_min) 73if abs(dy_max)>=abs(dy_min): 74 i=abs(dy_max) 75else: 76 i=abs(dy_min) 77if j==0: 78 j=0.01 79if i==0: 80 i=0.01 81for by in range(int(refY)): 82 for bx in range(int(refX)): 83 dxx=dx/j #dxxは変位量(x方向) 84 dyy=dy/i 85 86#色指定(Cは色の明るさ255/2が中央の色(変位量0) 87 Cx=(255.0/2.0)*dxx+(255.0/2.0) 88 Cy=(255.0/2.0)*dyy+(255.0/2.0)

試したこと

以下のようなコードを組んで回してみましたがエラーが出てしまいました.

for ay in range(int(refY)):
for ax in range(int(refX)):
ix=int
int(ax-w/(2b))<=int(ix<ax+w/(2b))
iy=int
ay-h/(2a)<=iy<ay+h/(2a)
ch1x=Cx
ch2x=Cx
ch3x=Cx
xg_img[iy,ix,0]=ch1x
xg_img[iy,ix,1]=ch2x
xg_img[iy,ix,2]=ch3x

ch1y=Cy ch2y=Cy ch3y=Cy yg_img[iy,ix,0]=ch1y yg_img[iy,ix,1]=ch2y yg_img[iy,ix,2]=ch3y

cv2.imwrite("img/x_so.JPG",xg_img)
cv2.imwrite("img/y_so.JPG",yg_img)

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

1T2R3M4

2021/06/09 06:05

調べたこと、試したことを追記していただけませんか。
CHO-883

2021/06/09 07:19

追記しました!お手数かけます.
meg_

2021/06/12 10:37 編集

コードは「コードの挿入」で記入してください。また、発生したというエラーメッセージも記入ください。
guest

回答1

0

ベストアンサー

python

1ix=int 2int(ax-w/(2*b))<=int(ix<ax+w/(2*b))``` 3のところがおかしいです。 4`ix`は`int`つまり型であるのに対し`ax+w/(2*b)`は数値そのもので、型と数値そのものになっています。

投稿2021/06/09 08:08

fukatani

総合スコア626

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問