前提・実現したいこと
Python OpenCVでテンプレートマッチングを行いたいです。
しかし、以下のエラーメッセージが出て、先に進めません。
発生している問題・エラーメッセージ
OpenCV Error: Assertion failed (corrsize.height <= img.rows + templ.rows - 1 && corrsize.width <= img.cols + templ.cols - 1) in cv::crossCorr, file C:\Anaconda2\conda-bld\opencv-contrib_1513946725639\work\opencv\modules\imgproc\src\templmatch.cpp, line 589
該当のソースコード
import cv2 import os import shutil base_path = "C:/Users/takumiendoh/Documents/image_classification" shiwake_mae_path = os.path.join(base_path,"shiwake_mae") shiwake_go_path = os.path.join(base_path,"shiwake_go") #マッチング基準値 threshold = 0.9 for image in os.listdir(shiwake_mae_path): shiwake_mae_image_path = os.path.join(shiwake_mae_path,image) img = cv2.imread(shiwake_mae_image_path, 0) # 入力画像 for folder in os.listdir(shiwake_go_path): shiwake_folder_path = os.path.join(shiwake_go_path,folder) master_image_path = shiwake_folder_path + "/master_image/" + os.listdir(shiwake_folder_path + "/master_image/")[0] # 入力画像、テンプレート画像を読み込む。 template = cv2.imread(master_image_path , 0) # テンプレート画像 # テンプレートマッチングを行う。 results = cv2.matchTemplate(img, template, cv2.TM_CCOEFF_NORMED) min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(results) print(max_val) if max_val > threshold: shutil.move(shiwake_mae_image_path,shiwake_folder_path) break #最後までマッチしなかったらここに置く。 if folder == "目検": shutil.move(shiwake_mae_image_path,shiwake_folder_path)
cv2.matchTemplate(img, template, cv2.TM_CCOEFF_NORMED) の行で上記エラーメッセージが発生します。
ネットで検索しても解決策が見つからず・・・
知恵を貸していただけないでしょうか?