Opencv问题 cvMatchTemplate 当没有找到匹配时,如何返回?
//以下这段代码是无论如何都会返回,当模板图与原始图差距很大时,也返回,这应该是不行,请问我如果知道匹配的结果?
谢谢!
- C/C++ code
IplImage* imgSrc = cvLoadImage(path);IplImage* imgTemp = cvLoadImage("C:\\temp2.bmp");CvSize sizeSrc = cvGetSize(imgSrc);CvSize sizeTemp = cvGetSize(imgTemp);CvSize sizeResult = cvSize(sizeSrc.width-sizeTemp.width+1,sizeSrc.height-sizeTemp.height+1);IplImage* imgResult = cvCreateImage(sizeResult,IPL_DEPTH_32F,1);cvMatchTemplate(imgSrc,imgTemp,imgResult,CV_TM_CCORR_NORMED);// a=cvMatchShapes(imgSrc,imgTemp,CV_CONTOURS_MATCH_I3);float dMax = 0.;CvPoint point = cvPoint(0,0);// if(!a) MessageBox("Not Successful!",MB_OK);for (int cx=0 ; cx<sizeResult.width ; cx++){for (int cy=0 ; cy<sizeResult.height ; cy++){float fTemp = CV_IMAGE_ELEM(imgResult,float,cy,cx);if (dMax < fTemp){dMax = fTemp;point = cvPoint(cx,cy);}}}CvPoint point2 = cvPoint(point.x+sizeTemp.width,point.y+sizeTemp.height);cvRectangle(imgSrc,point,point2,cvScalar(255));/*cvNamedWindow( "Test", CV_WINDOW_AUTOSIZE );cvShowImage("Test",imgSrc);*/[解决办法]
看cvShowImage出来的图像,我记得有两张图像,一张是原图,例外一张是匹配后得结果,目标图你先可以在原图上截取一部分试试,看看效果。记得cvShowImage()后面加上cvWaitKey(0);