1、单模板匹配
# 单模板匹配
import cv2 as cv
img = cv.imread('./test.jpg')
model = cv.imread('./face.jpg')
h, w = model.shape[:2] # 获取需要检测的模板大小
print(h, w)
# 平方差匹配法,越接近0说明越匹配
res1 = cv.matchTemplate(img, model, cv.TM_SQDIFF)
cv.normalize(res1, res1, 0, 1, cv.NORM_MINMAX) # 对平方差匹配算法处理结果进行手动归一化,使数据变为0-1之间
minVal, maxVal, minLoc, maxLoc = cv.minMaxLoc(res1) # 获取平方差匹配中的匹配度最高的位置
cv.rectangle(res1, minLoc, (minLoc[0] + w, minLoc[1] + h), 0, 5) # 匹配度最高的位置画黑色矩形框
# 归一化平方差匹配法,越接近0说明越匹配
res2 = cv.matchTemplate(img, model, cv.TM_SQDIFF_NORMED)
cv.normalize(res2, res2, 0, 1, cv.NORM_MINMAX) # 归一化TM_SQDIFF_NORMED算法处理结果,便于显示
minVal, maxVal, minLoc, maxLoc = cv.minMaxLoc(res2) # 获取归一化平方差匹配中的匹配度最高的位置
cv.rectangle(res2, minLoc, (minLoc[0] + w, minLoc[1] + h), 0, 5) # 匹配度最高的位置画黑色矩形框
# 相关性匹配法,值越大说明越匹配
res3 = cv.matchTemplate(img, model, cv.TM_CCORR)
cv.normalize(re