一、概念
模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域。
需要首先给定一个模板图像A,和一个待检测图像B。
在待检测图像B上,从左往右,从上往下计算待检测图像B和模板图像A所重叠的匹配度,匹配度越高则两者相同的可能性越高。
二、公式
相关API的实现可以去官网查看具体的源码
三、模板匹配
import cv2
import numpy as np
from matplotlib import pyplot as pltdef template():tpl = cv2.imread(r"G:\Juptyer_workspace\study\opencv\opencv3\yy.jpg")target = cv2.imread(r"G:\Juptyer_workspace\study\opencv\opencv3\sq.jpg")cv2.imshow("tpl",tpl)cv2.imshow("target",target)methods = [cv2.TM_SQDIFF_NORMED,cv2.TM_CCORR_NORMED,cv2.TM_CCOEFF_NORMED]th,tw = tpl.shape[:2]for md in methods:print(md)result = cv2.matchTemplate(target,tpl,md)min_val,max_val,min_loc,max_loc = cv2.minMaxLoc(result)if md == cv2.TM_SQDIFF_NORMED:tl = min_locelse:tl = max_locbr = (tl[0]+tw,tl[1]+th)cv2.rectangle(target,tl,br,(0,0,255),2)cv2.imshow("match-"+np.str(md),target)#cv2.imshow("match-"+np.str(md),result)template()
cv2.waitKey(0)
cv2.destroyAllWindows()
效果图如下: