在我實驗過程中發現,這種模板匹配如果不做任何處理只對原有圖像進行匹配的話,好像效果很瓜
貌似是模板是1? 那就只能檢測出正常形態下的1,變大或者是 l 都不一定檢測到,
也就是說,只能檢測和模板圖片大小尺寸顏色類別 一模一樣的目標
這就表明,你如果用模板匹配做識別,不但要定位到目標,還要確保,定位到的位置和模板匹配圖尺寸相同
簡單匹配實現代碼如下
import cv2 as cv
import numpy as np
from matplotlib import pyplot as pltdef Template_img(input_img,trmplate):img_rgb = cv.imread(input_img)# img_rgb=cv.resize(img_rgbs,(1000,800),interpolation=cv.INTER_CUBIC)img_gray = cv.cvtColor(img_rgb, cv.COLOR_BGR2GRAY)template = cv.imread(trmplate,0)w, h = template.shape[::-1]res = cv.matchTemplate(img_gray,template,cv.TM_CCOEFF_NORMED)#閾值threshold = 0.98loc = np.where( res >= threshold)print(loc)for pt in zip(*loc[::-1]):cv.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0,0,255), 2)#保存結果# cv.imwrite('res.png',img_rgb)#顯示cv.imshow("ss",img_rgb)cv.waitKey(0)cv.destroyAllWindows()
#原圖
inp_img= r"F:\Desk\cd\modeliamge\0012.png"
#模板圖
trmp_img= r"F:\Desk\cd\modeliamge\mm2.png"Template_img(inp_img,trmp_img)
效果
原圖? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?模板圖? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?結果圖
?
效果二
如果你的預測圖是這樣的? ?那么你模板圖就要和它一樣
原圖? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?模板圖? ? ? ? ? ? ? ? ? ? ? ? 效果圖
? ?
????
效果三?
原圖? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?模板圖? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?結果圖
?
這就是opencv的模板匹配 如果你 需要檢測的目標特別多,那必須要定位區域,在輸入的區域范圍場景的尺寸和匹配模板場景的尺寸一樣.
至于這玩意的應用場景,說實話不太了解,有知道的大佬可以指教指教