OpenCV半小時(shí)掌握基本操作之模板匹配
【OpenCV】⚠️高手勿入! 半小時(shí)學(xué)會(huì)基本操作 ⚠️ 概述模板
概述
OpenCV 是一個(gè)跨平臺(tái)的計(jì)算機(jī)視覺(jué)庫(kù), 支持多語(yǔ)言, 功能強(qiáng)大. 今天小白就帶大家一起攜手走進(jìn) OpenCV 的世界. (第 21 課)
模板匹配
模板匹配 (Template Matching) 和卷積的原理很像. 模板在原圖像上從原點(diǎn)開(kāi)始滑動(dòng), 計(jì)算模板與圖片被模板覆蓋的地方的差別程度.
格式:
cv2.matchTemplate(image, templ, method, result=None, mask=None)
參數(shù):
- image: 輸入圖像
- templ: 輸入模板
- method: 方法
- TM_SQDIFF: 計(jì)算平方差, 計(jì)算出來(lái)的值越小, 越相關(guān)
- TM_CCORR: 計(jì)算相關(guān)性, 計(jì)算出來(lái)的值越大, 越相關(guān)
- TM_CCOEFF: 計(jì)算相關(guān)系數(shù), 計(jì)算出來(lái)的值越大, 越相關(guān)
- TM_SQDIFF_NORMED: 計(jì)算歸一化平方不同, 計(jì)算出來(lái)的值越接近 0, 越相關(guān)
- TM_CCORR_NORMED: 計(jì)算歸一化相關(guān)性, 計(jì)算出來(lái)的值越接近 1, 越相關(guān)
- TM_CCOEFF_NORMED: 計(jì)算歸一化系數(shù), 計(jì)算出來(lái)的值越接近 1, 越相關(guān)
案例一
例 1:
import cv2 # 讀取圖片 img = cv2.imread("girl.jpg", 0) print(img.shape) # (1280, 1920) # 讀取模板 template = cv2.imread("face.jpg", 0) h, w = template.shape print(template.shape) # (510, 518) # 模板匹配 result = cv2.matchTemplate(img, template, cv2.TM_SQDIFF)
案例二
例 2:
import cv2 from matplotlib import pyplot as plt # 讀取圖片 img = cv2.imread("girl.jpg", 0) # 讀取模板 template = cv2.imread("face.jpg", 0) h, w = template.shape # 模式 methods = ['cv2.TM_SQDIFF', 'cv2.TM_SQDIFF_NORMED', 'cv2.TM_CCORR', 'cv2.TM_CCORR_NORMED', 'cv2.TM_CCOEFF', 'cv2.TM_CCOEFF_NORMED'] # 循環(huán) for meth in methods: img2 = img.copy() # 匹配方法的真值 method = eval(meth) print("method:", method) res = cv2.matchTemplate(img, template, method) min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res) # 如果是平方差匹配TM_SQDIFF或歸一化平方差匹配TM_SQDIFF_NORMED,取最小值 if method in [cv2.TM_SQDIFF, cv2.TM_SQDIFF_NORMED]: top_left = min_loc else: top_left = max_loc bottom_right = (top_left[0] + w, top_left[1] + h) # 畫(huà)矩形 cv2.rectangle(img2, top_left, bottom_right, 255, 2) # 展示 f, ax = plt.subplots(1, 2, figsize=(16, 8)) ax[0].imshow(img2, cmap='gray') ax[1].imshow(res, cmap='gray') plt.suptitle(meth) plt.show()
輸出結(jié)果:
到此這篇關(guān)于OpenCV半小時(shí)掌握基本操作之模板匹配的文章就介紹到這了,更多相關(guān)OpenCV模板匹配內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。