繁体   English   中英

cvMatchTemple断言失败错误(VS2015 + opencv2)

[英]cvMatchTemple assertion failed error (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错误:断言失败(result.size()== cv :: Size(std :: abs(img.cols-te mplscols)+ 1,std :: abs(img.rows-templ.rows)+1 )&& result.type()== CV_32F)在cvMatchTemplate中,文件E:\\ opencv \\ opencv \\ sources \\ modules \\ imgproc \\ src \\ templmatch .cpp,第1100行

这条线产生错误

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

它应该是

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

MatchTemplate需要的结果图像应该是32位浮点数,但是您给出了8位。这就是错误的意思

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM