ソース画像のどの位置に特定のサブ画像が表示されるかを知りたい(例:ソース画像:http: //i.pictr.com/6xg895m69q.png、サブ画像:http://i.pictr。 com / jdaz9zwzej.png)。配列をOpenCVに「読み取り可能」にするために変換する必要があることを私が知っている限り、これは私が試したものですが、何らかの理由で機能しません。これまでの私のコードは次のとおりです。
from PIL import Image
import numpy
from pylab import *
import cv2
import cv
image = cv2.imread('source_img.jpg')
template = cv2.imread('template_img.jpg')
im = cv.fromarray(image)
templ = cv.fromarray(template)
result = numpy.zeros(shape=(1,10)) ##create a matrix with 0s
a = cv.fromarray(result)
cv.MatchTemplate(im, templ, a, cv.CV_TM_CCORR)
print result
print image
私の目標は、結果の配列にサブイメージの座標を書き込むことです(配列の残りの部分は値0を保持する必要があります(私のコードはこれまでこれを作成しないことを知っています)。これは、実行時に表示されるエラーメッセージです。コード:
OpenCVエラー:アサーションに失敗しました(result.size()== cv :: Size(std :: abs(img.cols --templ.cols)+ 1、std :: abs(img.rows --templ.rows)+ 1) && result.type()== CV_32F)in cvMatchTemplate、file /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_graphics_opencv/opencv/work/OpenCV-2.4.3/modules/imgproc/pp/ 、376行目トレースバック(最後の最後の呼び出し):ファイル "/Users/strongbow/imagerecognition.py"、27行目、cv.MatchTemplate(im、templ、a、cv.CV_TM_CCORR)cv2.error:result.size() == cv :: Size(std :: abs(img.cols --templ.cols)+ 1、std :: abs(img.rows --templ.rows)+ 1)&& result.type()== CV_32F
私はOpenCVを初めて使用しますが、このエラーメッセージをどうすればよいか本当にわかりません。誰かアイデア/ポインタをどうするか?