模板匹配
作者:互联网
模板匹配:
1 // 一幅图像的模板匹配,找到在原图中的大致位置 2 void Match_Template(IplImage *src, IplImage *templat, IplImage *show) 3 { 4 IplImage *result; 5 int srcW, templatW, srcH, templatH, resultW, resultH; 6 if(!src || !templat) { 7 printf("打开图片失败"); 8 return; 9 } 10 srcW = src->width; 11 srcH = src->height; 12 templatW = templat->width; 13 templatH = templat->height; 14 15 if(srcW < templatW || srcH < templatH) { 16 printf("模板不能比原图小"); 17 return; 18 } 19 //计算结果矩阵的大小 20 resultW = srcW - templatW + 1; 21 resultH = srcH - templatH + 1; 22 //创建存放结果的空间 23 result = cvCreateImage(cvSize(resultW,resultH),32,1); 24 double minVal,maxVal; 25 CvPoint minLoc,maxLoc; 26 //调用模板匹配函数--平方差匹配 27 cvMatchTemplate(src,templat,result,CV_TM_SQDIFF); 28 //查找最相似的值及其所在坐标 29 cvMinMaxLoc(result,&minVal,&maxVal,&minLoc,&maxLoc,NULL); 30 printf("minVal = %f maxVal = %f\n ",minVal,maxVal); 31 //绘制结果 32 cvRectangle(show,minLoc,cvPoint(minLoc.x+templat->width,minLoc.y+templat->height),CV_RGB(255,255,255),5); 33 34 //显示结果 35 cvNamedWindow("show"); 36 cvNamedWindow("tem"); 37 cvShowImage("show",show); 38 cvShowImage("tem" , templat); 39 cvWaitKey(0); 40 }
2021-06-04
标签:src,匹配,show,minLoc,templat,IplImage,模板 来源: https://www.cnblogs.com/2015-16/p/14851168.html