模板匹配

模板匹配

模板匹配

模板匹配

模板匹配:

 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

上一篇:imx6设备树pinctrl解析


下一篇:javaCV图像处理之Frame、Mat和IplImage三者相互转换(使用openCV进行Mat和IplImage转换)