テンプレート一致方法でif/elseを作成したいので、一致するかどうかを確認して印刷できます。しかし、関数cv2.matchTemplateがマッチしなかった場合は、何らかの値を返す代わりに単にエラーをスローします。だから私はそれを比較のために使うことができるように整数値を返してもらうにはどうすればいいですか?基本的には、エラーを投げないようにして、代わりに一致しない場合には何らかの値を返します。cv2.matchTemplate関数がテンプレートとイメージに一致しないためにプログラムが実行されないようにする方法はありますか?
エラーは次のとおりです。cv2.error:/tmp/opencv20160107-54198-1duzac3/opencv-2.4.12/modules/imgproc/src/templmatch.cpp:251:エラー:(-215)img.rows> =関数matchTemplateで& & img.cols> = templ.colsをtempl.rows
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('image.jpg',0)
template = cv2.imread('template.jpg',0)
w, h = template.shape[::-1]
methods = ['cv2.TM_CCOEFF_NORMED','cv2.TM_SQDIFF']
res=cv2.matchTemplate(img,template,cv2.TM_CCOEFF_NORMED)
if res.any():
print "match"
else:
print "no match"
OpenCV Error:アサーションに失敗しました(img.rows> = templ.rows && img.cols> = templ.cols)、matchTemplateファイル/ tmp /opencv20160107-54198-1duzac3/opencv-2.4.12/modules/imgproc/src/templmatch.cpp、line 251 –
こんにちは、私はこの答えの範囲を停止を止めないようにキャッチするつもりですあなたのプログラムの流れ。問題が解決した場合は、この回答を受け入れて、別の質問(例:画像ファイル)を投稿して、エラーを再現して修正をお願いします。 – bakkal
しかし、それはどのように見えますか、あなたのテンプレートは、あなたが一致を実行したい画像より大きいサイズのものと思われます – bakkal