模板匹配的函数
cv2.matchTemplate(img,template,method).
img:需要检测的照片
template:模板图片
method:检测方法:包括:
1.TM_SQDIFF;TM_SQDIFF_NORMED(归一化处理)
2.TM_CCORR:TM_CCORR_NORMED(归一化处理)
3.TM_CCOEFF:TM_CCOEFF_NORMED(…)
个人建议采用归一化处理的方法更好,稳定性更强。
(1:method 的值为cv2.TM_SQDIFF 和cv2.TM_SQDIFF_NORMED 时,result 值为0 表示匹配度最好,值越大,表示匹配度越差。
(2:method 的值为cv2.TM_CCORR、cv2.TM_CCORR_NORMED、cv2.TM_CCOEFF 和cv2.TM_CCOEFF_NORMED 时,result 的值越小表示匹配度越差,值越大表示匹配度越好。
模板匹配查找目标位置
查找最值(极值)与最值所在的位置(目标的左下角位置),可以使用cv2.minMaxLoc()函数实现。该函数语法格式如下:
minVal, maxVal, minLoc, maxLoc = cv2.minMaxLoc(matchTemplate 函数的返回值)
topLeft = minLoc # 查找最小值所在的位置(图像左下角位置)
以 topLeft 点为模板匹配位置的左下角坐标,结合模板图像的宽度w 和高度h 可以确定匹配位置的右上角坐标,代码如下所示:
bottomRight = (topLeft[0] + w, topLeft[1] + h) #w 和h 是模板图像的宽度和高度
w 和 h是模板的宽度和高度,
h,w=photo.shape[:2]
通过上述方法,我们以及找到了目标的坐标,接下来,我们可以使用绘图方法将目标框选出来