參數(shù) | 取值 | 含義 |
---|---|---|
cv2.TM_SQDIFF | 0 | 以方差為依據進行匹配。若完全匹配,則結果為0;若不匹配,則會得到一個很大的差值 |
cv2.TM_SQDIFF_NORMED | 1 | 標準(歸一化)平方差匹配 |
cv2.TM_CCORR | 2 | 相關匹配,這類方法將模板圖像與輸入圖像相乘,如果乘積越大,則匹配度較高;如果乘積為0,則表示匹配效果最差 |
cv2.TM_CCORR_NORMED | 3 | 標準(歸一化)相關匹配 |
cv2.TM_CCOEFF | 4 | 相關系統(tǒng)匹配,這類方法將模板圖像與其均值的相對值,和輸入圖像與其均值的相關值進行匹配。1表示完美匹配,-1表示糟糕的匹配,0表示沒有任何相關匹配(隨機序列) |
cv2.TM_CCOEFF_NORMED | 5 | 標準(歸一化)相關系數(shù)匹配 |
result:返回值。它是由每個位置的比較結果組合所構成的一個結果集,類型是單通道32位浮點型。如果輸入圖像尺寸是WH,模板尺寸是wh,則返回值的大小為(W-w+1)*(H-h+1)。
mask:模板圖像掩模。它必須與模板圖像具有相同類型的大小。通常使用默認值即可。
首先,我們需要兩張圖片,這里我們還是選取經常用的美女照片以及截取其眼睛部分作為模板圖像,如下:
import cv2 import matplotlib.pyplot as plt img = cv2.imread("4.jpg", 0) template = cv2.imread("4_1.jpg", 0) th, tw = template.shape[::] rv = cv2.matchTemplate(img, template, cv2.TM_SQDIFF) min, max, minLoc, maxLoc = cv2.minMaxLoc(rv) topLeft = minLoc bottomRight = (topLeft[0] + tw, topLeft[1] + th) cv2.rectangle(img, topLeft, bottomRight, 255, 2) plt.subplot(121) plt.imshow(template, cmap="gray") plt.axis('off') plt.subplot(122) plt.imshow(img, cmap="gray") plt.axis('off') plt.show()
運行之后,效果如下:
附錄:
模板圖
原圖
到此這篇關于OpenCV-Python模板匹配人眼的實例的文章就介紹到這了,更多相關OpenCV 模板匹配 內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!