模板匹配函数:matchTemplate()
该函数支持灰度图像和彩色图像两种图像的匹配。
函数原型
void matchTemplate( InputArray image, InputArray templ, OutputArray result, int method );
参数解释:
image:待匹配的原始图像,图像的数据类型为CV_8U和CV_32F两者中的一个。
templ:模板图像,需要与原图像具有相同数据类型,但是尺寸不能大于原始图像。
result:模板匹配结果输出图像,图像数据类型为CV_32F。
method:模板匹配方法标志,可选择下面中的介绍
mask:模板匹配的掩码,必须与模板图像具有相同的数据类型和尺寸,默认情况下不需要设置。
method标志参数 | 简记 | 方法名称 |
TM_SQDIFF | 0 | 平方差匹配法 |
TM_SQDIFF_NORMED | 1 | 归一化平方差匹配法 |
TM_CCORR | 2 | 相关匹配法 |
TM_CCORR_NORMED | 3 | 归一化相关匹配法 |
TM_CCOEFF | 4 | 系数匹配法 |
TM_CCOEFF_NORMED | 5 | 归一化相关系数匹配法 |
目前仅支持TM_SQDIFF和TM_CCORR_NORMED两种匹配方法中使用。
当函数计算完成后,想要获取其匹配最大的点由minMaxLoc()函数计算
minMaxLoc()函数:查找全局最小和最大元素并返回其值及其位置
用法:
double minVal,maxVal;
Point minLoc,maxLoc;
minMaxLoc(result,&minVal,&maxVal,&minLoc,&maxLoc);
可以在原图中画出该区域
rectangle(img,cv::Rect(maxLoc.x,maxLoc.y,templ.cols,templ.rows),Scalar(0,0,255),2);
有关于该函数和相关变量的使用方法请另查找,不过如上已经能够进行基本运用了。
《》《》《》《》《》其他更加具体的介绍待补充.....