保定网站建设制作开发平台,东莞的网站建设公司,做网站怎样更改背景,书签制作古风matchTemplate函数参数
模板匹配是通过模板在采集到的原图像进行滑动寻找与模板图像相似的目标。模板匹配不是基于直方图的方式#xff0c;而是基于图像的灰度匹配。 6种匹配度量方法#xff1a; 平方差匹配法CV_TM_SQDIFF 归一化平方差匹配法CV_TM_SQDIFF_NORMED 相关匹配…matchTemplate函数参数
模板匹配是通过模板在采集到的原图像进行滑动寻找与模板图像相似的目标。模板匹配不是基于直方图的方式而是基于图像的灰度匹配。 6种匹配度量方法 平方差匹配法CV_TM_SQDIFF 归一化平方差匹配法CV_TM_SQDIFF_NORMED 相关匹配法CV_TM_CCORR 归一化相关匹配法CV_TM_CCORR_NORMED 系数匹配法CV_TM_CCOEFF 化相关系数匹配法CV_TMCCOEFF_NORMED 方差匹配方法完全匹配会得到1 完全不匹配会得到0。 归一化方差匹配方法完全匹配结果为0。 相关性匹配方法完全匹配会得到很大值不匹配会得到一个很小值或0。 归一化的互相关匹配方法完全匹配会得到1 完全不匹配会得到0。 相关系数匹配方法完全匹配会得到一个很大值完全不匹配会得到0完全负相关会得到很大的负数。 归一化的相关系数匹配方法完全匹配会得到1完全负相关匹配会得到-1完全不匹配会得到0。 关于函数中result矩阵的含义这篇文章有总结有疑问的可以看一看 cvMatchTemplate中的参数result的几点说明
matchTemplateDemo代码
框选出模板后按下回车键即可
int main()
{//改变控制台字体颜色system(color 02);VideoCapture capture(0);int cnt 0;Mat frame; //存储每一帧的图像Mat tempMat;Mat refMat;Mat resultMat;Mat dispMat;while (1){capture frame; //读取当前帧if (cnt 0) {Rect2d r;r selectROI(frame, true); //选择一个矩形roi区域tempMat frame(r); //此区域为模板区域tempMat.copyTo(refMat);destroyAllWindows();}int match_method 0; //选取平方差匹配法 matchTemplate(frame, refMat, resultMat, match_method);normalize(resultMat, resultMat, 0,1,NORM_MINMAX,-1,Mat()); //归一化double minVal; double maxVal; Point minLoc; Point maxLoc; Point matchLoc; //定义最大值最小值以及它们的位置变量minMaxLoc(resultMat, minVal, maxVal, minLoc, maxLoc,Mat()); //从结果矩阵中找到匹配度最大以及最小的值并且确定其位置//对于方法SQDIFF和SQDIFF_NORMED两种方法来讲越小的值就有着更高的匹配结果//而其余的方法则是数值越大匹配效果越好if (match_method TM_SQDIFF || match_method TM_SQDIFF_NORMED)matchLoc minLoc;elsematchLoc maxLoc;frame.copyTo(dispMat);//以最佳匹配点为中心绘制与模板相同大小的框rectangle(dispMat, matchLoc, Point(matchLoc.x refMat.cols, matchLoc.y refMat.rows), Scalar::all(0), 2, 8, 0);cnt;imshow(template,refMat) ;imshow(dispMat,dispMat) ;waitKey(30);}return 0;
}展示效果
这并不是演示代码的展示效果但是差不多意思。