一、概念
模板匹配就是在整個圖像區域發現與給定子圖像匹配的小塊區域。
需要首先給定一個模板圖像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()
效果圖如下: