OpenCV-Python模板匹配人眼的實(shí)例
什么是模板匹配
模板匹配是指在當(dāng)前圖像A內(nèi)尋找與圖像B最相似的部分,可以理解找茬,但是這里是找出一樣的信息。
一般我們將圖像A稱(chēng)為輸入圖像,將圖像B稱(chēng)為模板圖像。模板匹配的原理就是將模板B圖像在圖像A上滑動(dòng)遍歷,找出與其匹配的部分。
模板匹配函數(shù)
在OpenCV中,它給我們提供了cv2.matchTemplate()函數(shù)來(lái)完成模板匹配。其函數(shù)的完整定義如下:
def matchTemplate(image, templ, method, result=None, mask=None):
image:原始圖像
templ:模板圖像
method:匹配方法。該參數(shù)通過(guò)TemplateMatchModes實(shí)現(xiàn),如下表所示:
參數(shù) | 取值 | 含義 |
---|---|---|
cv2.TM_SQDIFF | 0 | 以方差為依據(jù)進(jìn)行匹配。若完全匹配,則結(jié)果為0;若不匹配,則會(huì)得到一個(gè)很大的差值 |
cv2.TM_SQDIFF_NORMED | 1 | 標(biāo)準(zhǔn)(歸一化)平方差匹配 |
cv2.TM_CCORR | 2 | 相關(guān)匹配,這類(lèi)方法將模板圖像與輸入圖像相乘,如果乘積越大,則匹配度較高;如果乘積為0,則表示匹配效果最差 |
cv2.TM_CCORR_NORMED | 3 | 標(biāo)準(zhǔn)(歸一化)相關(guān)匹配 |
cv2.TM_CCOEFF | 4 | 相關(guān)系統(tǒng)匹配,這類(lèi)方法將模板圖像與其均值的相對(duì)值,和輸入圖像與其均值的相關(guān)值進(jìn)行匹配。1表示完美匹配,-1表示糟糕的匹配,0表示沒(méi)有任何相關(guān)匹配(隨機(jī)序列) |
cv2.TM_CCOEFF_NORMED | 5 | 標(biāo)準(zhǔn)(歸一化)相關(guān)系數(shù)匹配 |
result:返回值。它是由每個(gè)位置的比較結(jié)果組合所構(gòu)成的一個(gè)結(jié)果集,類(lèi)型是單通道32位浮點(diǎn)型。如果輸入圖像尺寸是WH,模板尺寸是wh,則返回值的大小為(W-w+1)*(H-h+1)。
mask:模板圖像掩模。它必須與模板圖像具有相同類(lèi)型的大小。通常使用默認(rèn)值即可。
實(shí)現(xiàn)模板匹配
首先,我們需要兩張圖片,這里我們還是選取經(jīng)常用的美女照片以及截取其眼睛部分作為模板圖像,如下:
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()
運(yùn)行之后,效果如下:
附錄:
模板圖
原圖
到此這篇關(guān)于OpenCV-Python模板匹配人眼的實(shí)例的文章就介紹到這了,更多相關(guān)OpenCV 模板匹配 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- opencv-python圖像配準(zhǔn)(匹配和疊加)的實(shí)現(xiàn)
- Opencv Python實(shí)現(xiàn)兩幅圖像匹配
- Python使用Opencv實(shí)現(xiàn)圖像特征檢測(cè)與匹配的方法
- Python和OpenCV進(jìn)行多尺度模板匹配實(shí)現(xiàn)
- OpenCV-Python實(shí)現(xiàn)多模板匹配
- python基于OpenCV模板匹配識(shí)別圖片中的數(shù)字
- Python開(kāi)發(fā)之基于模板匹配的信用卡數(shù)字識(shí)別功能
- Python+Opencv實(shí)現(xiàn)圖像匹配功能(模板匹配)
相關(guān)文章
Python使用socket_TCP實(shí)現(xiàn)小文件下載功能
這篇文章主要介紹了Python使用socket_TCP實(shí)現(xiàn)小文件下載功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10Python Sleep休眠函數(shù)使用簡(jiǎn)單實(shí)例
這篇文章主要介紹了Python Sleep休眠函數(shù)使用簡(jiǎn)單實(shí)例,本文直接給出兩個(gè)實(shí)現(xiàn)例子,需要的朋友可以參考下2015-02-02python 如何利用argparse解析命令行參數(shù)
這篇文章主要介紹了python 利用argparse解析命令行參數(shù)的步驟,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下2020-09-09Python標(biāo)準(zhǔn)庫(kù)中的logging用法示例詳解
logging是Python標(biāo)準(zhǔn)庫(kù)中記錄常用的記錄日志庫(kù),通過(guò)logging模塊存儲(chǔ)各種格式的日志,主要用于輸出運(yùn)行日志,可以設(shè)置輸出日志的等級(jí)、日志保存路徑、日志文件回滾等,這篇文章主要介紹了Python標(biāo)準(zhǔn)庫(kù)中的logging,需要的朋友可以參考下2022-09-09AMP?Tensor?Cores節(jié)省內(nèi)存PyTorch模型詳解
這篇文章主要為大家介紹了AMP?Tensor?Cores節(jié)省內(nèi)存PyTorch模型詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10Flask框架運(yùn)用WTForms實(shí)現(xiàn)用戶注冊(cè)的示例詳解
WTForms 是用于web開(kāi)發(fā)的靈活的表單驗(yàn)證和呈現(xiàn)庫(kù),它可以與您選擇的任何web框架和模板引擎一起工作,并支持?jǐn)?shù)據(jù)驗(yàn)證、CSRF保護(hù)、國(guó)際化等。本文將運(yùn)用WTForms實(shí)現(xiàn)用戶注冊(cè)功能,需要的可以參考一下2022-12-12