1. 程式人生 > >python語言opencv模板匹配

python語言opencv模板匹配

# -*- coding:utf-8 -*-   

import cv2  
import numpy as np  
from matplotlib import pyplot as plt  

img = cv2.imread("/media/圖片/Wallpapers/SMG.png",0)  
img2 = img.copy()  
template = cv2.imread("/media/圖片/7.png",0)  
w,h = template.shape[::-1]  

methods = ['cv2.TM_CCOEFF', 'cv2.TM_CCOEFF_NORMED', 'cv2.TM_CCORR'
, 'cv2.TM_CCORR_NORMED', 'cv2.TM_SQDIFF', 'cv2.TM_SQDIFF_NORMED'] for meth in methods: img = img2.copy() method = eval(meth) res = cv2.matchTemplate(img,template,method) min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res) 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) cv2.rectangle(img,top_left, bottom_right, 255, 2) print (meth) plt.subplot(221), plt.imshow(img2,cmap= "gray") plt.title('Original Image'), plt.xticks([]),plt.yticks([]) plt.subplot(222
), plt.imshow(template,cmap= "gray") plt.title('template Image'),plt.xticks([]),plt.yticks([]) plt.subplot(223), plt.imshow(res,cmap= "gray") plt.title('Matching Result'), plt.xticks([]),plt.yticks([]) plt.subplot(224), plt.imshow(img,cmap= "gray") plt.title('Detected Point'),plt.xticks([]),plt.yticks([]) plt.show()

注:matplotlib中cmap為gray為黑底白字,gray_r為白底黑字,seismic為兩端發散的色圖
這裡寫圖片描述