啥叫模板匹配
模板匹配就是在大图中找小图,也就说在一幅图像中寻找另一幅模板图像的位置:
OpenCV使用 cv2.matchTemplate() 实现模板匹配。
importcv2importnumpy as npfrom matplotlib import pyplot as plt
img = cv2.imread('lena.jpg', 0)
template= cv2.imread('face.jpg', 0)
h, w= template.shape[:2] #rows->h, cols->w
匹配函数返回的是一幅灰度图,最白的地方表示最大的匹配。使用 cv2.minMaxLoc() 函数可以得到最大匹配值的坐标,以这个点为左上角角点,模板的宽和高画矩形就是匹配的位置了:
#相关系数匹配方法: cv2.TM_CCOEFF
res =cv2.matchTemplate(img, template, cv2.TM_CCOEFF)
min_val, max_val, min_loc, max_loc=cv2.minMaxLoc(res)
left_top= max_loc #左上角
right_bottom = (left_top[0] + w, left_top[1] + h) #右下角
cv2.rectangle(img, left_top, right_bottom, 255, 2) #画出矩形位置
plt.subplot(121), plt.imshow(res, cmap='gray')
plt.title(