opencv模板匹配

import cv2 
import numpy as np
import matplotlib.pyplot as plt
img =cv2.imread('E:/python/sunflower.png') 
temp=cv2.imread('E:/python/s.jpg') 
w,h=temp.shape[:2]
img2=img.copy()

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,temp,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)
    plt.subplot(121),plt.imshow(img,'gray'),plt.title('detect point'),plt.xticks([]),plt.yticks([])
    plt.subplot(122),plt.imshow(res,'gray'),plt.title('matching'),plt.xticks([]),plt.yticks([])
    plt.suptitle(meth)
    plt.show

opencv模板匹配opencv模板匹配opencv模板匹配opencv模板匹配opencv模板匹配opencv模板匹配多对象匹配

import cv2 
import numpy as np
import matplotlib.pyplot as plt
img =cv2.imread('E:/python/yibi.jpg') 
temp=cv2.imread('E:/python/yibi1.jpg') 
w,h=temp.shape[:2]


#methods=['cv2.TM_CCOEFF','cv2.TM_CCOEFF_NORMED','cv2.TM_CCORR',
         #'cv2.TM_CCORR_NORMED','cv2.TM_SQDIFF','cv2.TM_SQDIFF_NORMED']
meth='cv2.TM_CCOEFF_NORMED'
method=eval(meth)
res=cv2.matchTemplate(img,temp,method)
min_val,max_val,min_loc,max_loc=cv2.minMaxLoc(res)
threshold=0.8*max_val
loc=np.where(res>=threshold)
for pt in zip(*loc[::-1]):
    cv2.rectangle(img,pt,(pt[0]+w,pt[1]+h),255,2)
    

img=img[:,:,::-1]
plt.subplot(121),plt.imshow(img),plt.title('detect point'),plt.xticks([]),plt.yticks([])
plt.subplot(122),plt.imshow(res,'gray'),plt.title('matching'),plt.xticks([]),plt.yticks([])
plt.suptitle(meth)
plt.show


opencv模板匹配