2016-06-15 9 views
0

私は誰かがそれを理解できることを願っています。cvMatchTempleアサーションエラー(VS2015 + opencv2)

コード

int iwidth = screenImage->width - templ->width+1; 
int iheight = screenImage->height - templ->height+1; 

IplImage *ftmp = cvCreateImage(cvSize(iwidth, iheight), 8,1); 
double max_val; 
double min_val; 
CvPoint min_loc; 
CvPoint max_loc; 
cvMatchTemplate(screenImage,templ,ftmp,0); 
cvMinMaxLoc(ftmp, &min_val, &max_val, &min_loc, &max_loc, NULL); 
cvRectangle(screenImage, cvPoint(min_loc.x, min_loc.y), cvPoint((min_loc.x + templ->width), (min_loc.y + templ->height)), CV_RGB(0, 255, 0), 1); 
cvNamedWindow("src", 1); 
cvShowImage("src", screenImage); 
cvWaitKey(0); 

そして、私はそれを実行したとき、私はエラーました:

OpenCV Error: Assertion failed (result.size() == cv::Size(std::abs(img.cols - te mpl.cols) + 1, std::abs(img.rows - templ.rows) + 1) && result.type() == CV_32F) in cvMatchTemplate, file E:\opencv\opencv\sources\modules\imgproc\src\templmatch .cpp, line 1100

+0

言っていますが、使用しないでくださいCのAPI – Berriel

+0

を使用しているものです時代遅れのC API! – Miki

答えて

0

この行がエラーに

IplImage *ftmp = cvCreateImage(cvSize(iwidth, iheight), 8,1); 

を生産している、それは

する必要があります 人の
IplImage *ftmp = cvCreateImage(cvSize(iwidth, iheight), 32,1); 

MatchTemplateニーズは画像が32ビット浮動小数点のものでなければならない結果がありますが8 bit.Thisを与えているが、エラーがあなたがC++をタグ付け

result.size() == cv::Size(std::abs(img.cols - te mpl.cols) + 1, std::abs(img.rows - templ.rows) + 1) && result.type() == CV_32F 
関連する問題