Opencv有关问题 cvMatchTemplate 当没有找到匹配时,怎么返回
Opencv问题 cvMatchTemplate 当没有找到匹配时,如何返回?
//以下这段代码是无论如何都会返回,当模板图与原始图差距很大时,也返回,这应该是不行,请问我如果知道匹配的结果?
谢谢!
------解决方案--------------------
看cvShowImage出来的图像,我记得有两张图像,一张是原图,例外一张是匹配后得结果,目标图你先可以在原图上截取一部分试试,看看效果。记得cvShowImage()后面加上cvWaitKey(0);
//以下这段代码是无论如何都会返回,当模板图与原始图差距很大时,也返回,这应该是不行,请问我如果知道匹配的结果?
谢谢!
- 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);