前言
在opencv中,模板匹配进行物体识别有专门的函数matchTemplate()来执行这一动作。这个函数用来在给定图像或区域中进行模板图像的匹配,其做法是按照一定的计算方法将模板图像在给定图样中进行顺次滑移,最终将每一个位置的计算结果汇合成一个点阵。在这个点阵中,其最大值或者最小值就是我们需要的结果,对于需要的极值的提取,需要配合minMaxLoc函数来进行提取。上述方法首先需将模板和图样转化为灰度图,对于彩色图像其实可以同样进行,只是将每一个颜色通道都分别进行计算,其最终结果也是一个单维的点阵。
在python语言中用法如下:
result=cv2.matchTemplate(image,template,method[,result[,mask]])
各参数含义如下:
image:搜索图像,8位或32位浮点数
template:模板图像,最好直接从原图中截取,图幅需小于原图,格式一致。
result:比较结果文件,一维32-bit浮点数,维度大小 (W−w+1)×(H−h+1) .
method:比较方法,请参看官网 cv::TemplateMatchModes 参数说明
mask:模板蒙版,和模板尺寸类型一致,目前仅支持TM_SQDIFF 、TM_CCORR_NORMED 方法
method的用法如下:
cv::TemplateMatchModes {
cv::TM_SQDIFF = 0,
cv::TM_SQDIFF_NORMED = 1,
cv::TM_CCORR = 2,(这个算法似乎有些问题)
c