前提・実現したいこと
テンプレートマッチングのプログラムを作成しています.44行目で以下のようなエラーが発生してしまい対処法が分からず困っています.
おそらく初歩的なことなのかと思いますが,わかる方いらっしゃいましたらご回答宜しくお願い致します.
発生している問題・エラーメッセージ
TypeError: 'NoneType' object is not subscriptable
import sys import cv2 import numpy as np #参照画像大きさ h=3072 w=4608 c=3 #X方向変位量の測定画像の箱 xg_img=np.empty((h,w,3)) #Y方向変位量の測定画像の箱 yg_img=np.empty((h,w,3)) #参照画像の縦分割数 a=32#縦分割数 b=32#横分割数 #追加領域の幅 k=20#縦追加領域 v=20#横追加領域 #座標指定(画像)と参照箱の指定 ref_box=np.empty((int(h/a),int(w/b),3)) mea_box=np.empty((int(h/a+2*k),int(w/b+2*v),3)) dx_box=np.empty((int(a),int(b))) dy_box=np.empty((int(a),int(b))) imref=cv2.imread('DSC_0091.JPG') immea=cv2.imread('DSC_0092.JPG') cy=0 for refY in range (int(h/(2*a)),int(h-(h/(2*a))),int(h/a)): cx=0 for refX in range (int(w/(2*b)),int(w-(w/(2*b))),int(w/b)): # z=(refX,refY) ref_box=imref[int(refY-(h/(2*a))):int(refY+(h/(2*a))),int(refX-(w/(2*b))):int(refX+(w/(2*b)))] y_min = int(refY-(h/(2*a))-v) y_max = int(refY+(h/(2*a))+v) x_min = int(refX-(w/(2*b))-k) x_max = int(refX+(w/(2*b))+k) if y_min < 0: y_min = 0 if y_max > h: y_max = h if x_min < 0: x_min = 0 if x_max > w: x_max = w mea_box=immea[y_min:y_max, x_min:x_max] sokan=cv2.matchTemplate(mea_box,ref_box,cv2.TM_CCOEFF_NORMED) #[-1,1]を[0,1]へ cv2.normalize(sokan,sokan,0,1,cv2.NORM_MINMAX) #相互相関係数の最小値・最大値とその座標を抽出 #相関係数の最大値座標の検出 minVal, maxVal, minLoc, maxLoc=cv2.minMaxLoc(sokan) #検出領域中心座標(mea_boxの左上が(0,0)となる)-----⓵ # detect=(pMax[0]+refX,pMax[1]+refY) afterx=maxLoc[0]+refX aftery=maxLoc[1]+refY #変位量 dx=afterx-refX dy=aftery-refY dx_box[cy,cx]=dx dy_box[cy,cx]=dy cx=cx+1 cy=cy+1 cv2.imwrite('dx.tif',dx_box) cv2.imwrite('dy.tif',dy_box) ```python
試したこと
int関数を付けて型を統一しようと試みました.
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。