模板匹配和积卷原理很想。模板在原图像上从原点(从左到右,从上到下)计算模板与图像被模板覆盖的地方(模板这个核在原图上对比的核)的差别程度
这个差别程度的计算方法在opencv里有6种,然后将每次计算的结果放入一个矩阵里,作为结果输出
假如原图像是AxB大小 则输出结果的矩阵为(A-a+1)x(B-b+1)
TM_SQDIFF:计算平方不同,计算出来的值越小,越相关
TM_CCORR:计算相关性,计算出来的值越大,越相关
TM_CCOEFF:计算相关系数,计算出来的值越大,越相关
TM_SQDIFF_NORMED:计算归一化平方不同,计算出来的值越接近0,越相关。
TM_CCORR_NORMED:计算归一化相关性,计算出来的值越接近1,越相关。
TM_CCOEFF_NORMED:计算归一化相关系数,计算出来的值越接近1,越相关。
import cv2
import numpy as np
import matplotlib.pyplot as plt
def cv_show(name, img):
cv2.imshow(name, img)
cv2.waitKey(0)
cv2.destroyWindow("all")
# 转灰度图 原始图像
img = cv2.imread("Lena.jpg", 0)
# 0是转灰度 模板图像 要在原始图像中对比
template = cv2.imread("Face.jpg", 0)
#template = cv2.imread("1.jpg", 0)
# 获得模板的宽和高
h, w = template.shape[:2]
print("h:",h,"w: