在学习OpenCV,很辛苦才找到相关的例子,在这里共享给大家,这里是在加入到我的程序中提取出来的: void CFollowDlg::MatchTemplate(CString path){ //if(!a) MessageBox("Not Successful!",MB_OK); for (int cx=0 ; cx } void CFollowDlg::OnButton4() 希望对大家有所帮助! 关于cvMatchTemplate()的说明文档: 原型: void cvMatchTemplate( const CvArr* image, const CvArr* templ,
cvMatchShapes()应用举例: 例子摘自http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=1736
int cvMatchShapes_test()
{ IplImage *mode = cvLoadImage("D:\\lena.jpg", 1); IplImage *test = cvLoadImage("D:\\test3.bmp", 1); IplImage* bw_mode = cvCreateImage(cvGetSize(mode),mode->depth,1); IplImage* bw_test = cvCreateImage(cvGetSize(test),mode->depth,1); IplImage* canny_mode = cvCreateImage(cvGetSize(mode),mode->depth,1); IplImage* canny_test = cvCreateImage(cvGetSize(test),mode->depth,1); CvMemStorage *mode_mems=cvCreateMemStorage(); CvSeq *mode_seqs; CvMemStorage *test_mems=cvCreateMemStorage(); CvSeq *test_seqs; cvCvtColor(mode,bw_mode,CV_RGB2GRAY); cvCvtColor(test,bw_test,CV_RGB2GRAY); //model contours //cvCanny(bw_mode,canny_mode,50,60); cvFindContours( bw_mode, mode_mems, &mode_seqs,sizeof(CvContour),CV_RETR_TREE); //test contours //cvCanny(bw_test,canny_test,50,60); cvFindContours( bw_test, test_mems, &test_seqs,sizeof(CvContour),CV_RETR_TREE); double matching=cvMatchShapes( test_seqs, mode_seqs, 3); printf("%f",matching); cvReleaseImage( &mode ); // cvReleaseImage( &test ); cvReleaseImage( &bw_mode ); // cvReleaseImage( &bw_test ); cvReleaseImage( &canny_mode ); // cvReleaseImage( &canny_test ); //ÊÍ·ÅÄÚ´æ return 1; }
关于cvMatchShapes()的说明文档:
MatchShapes比较两个形状 double cvMatchShapes( const void* object1, const void* object2,
函数 cvMatchShapes 比较两个形状。 三个实现方法全部使用 Hu 矩 (见 cvGetHuMoments) (longlongago2000) |