Python3與OpenCV3.3 影象處理(十四)--模板匹配
阿新 • • 發佈:2019-01-29
一、什麼是模板匹配
在整個影象區域發現與給定子影象匹配的區域,模板匹配的工作方式是在待檢測影象上從左到右,從上到下計算模板圖象與重疊子影象的匹配度,匹配度越大,兩者越相同
二、OpenCV中的模板匹配
CV_TM_SQDIFF 平方差匹配法:該方法採用平方差來進行匹配;最好的匹配值為0;匹配越差,匹配值越大。
CV_TM_CCORR 相關匹配法:該方法採用乘法操作;數值越大表明匹配程度越好。
CV_TM_CCOEFF 相關係數匹配法:1表示完美的匹配;-1表示最差的匹配。
CV_TM_SQDIFF_NORMED 歸一化平方差匹配法
CV_TM_CCORR_NORMED 歸一化相關匹配法
CV_TM_CCOEFF_NORMED 歸一化相關係數匹配法
三、示例程式碼
import cv2 as cv import numpy as np def template(): #模板圖片 tpl=cv.imread('12tem.jpg') #目標圖片 target=cv.imread('12.jpg') cv.imshow('template',tpl) cv.imshow('target',target) methods=[cv.TM_SQDIFF_NORMED,cv.TM_CCORR_NORMED,cv.TM_CCOEFF_NORMED] #獲得模板的高寬 th,tw=tpl.shape[:2] for md in methods: #執行模板匹配 #target:目標圖片 #tpl:模板圖片 #匹配模式 result=cv.matchTemplate(target,tpl,md) #尋找矩陣(一維陣列當作向量,用Mat定義) 中最小值和最大值的位置 min_val,max_val,min_loc,max_loc=cv.minMaxLoc(result) if md==cv.TM_SQDIFF_NORMED: tl=min_loc else: tl=max_loc br=(tl[0]+tw,tl[1]+th) #繪製矩形邊框,將匹配區域標註出來 #target:目標影象 #tl:矩形定點 #br:舉行的寬高 #(0,0,255):矩形邊框顏色 #2:矩形邊框大小 cv.rectangle(target,tl,br,(0,0,255),2) cv.imshow('match-'+np.str(md),target) template(); cv.waitKey(0) cv.destroyAllWindows()
覺得不錯打賞一下 | |
---|---|