政务中心建设网站,单位邮箱怎么申请163邮箱,网站源码下载平台,网站开发是编程吗python opencv -模板匹配
模板匹配就是#xff0c;我们现有一个模板和一个图片#xff0c;然后#xff0c;在这个图片中寻找和模板近似的部分。
在opencv 中主要通过cv2.matchTemplate这个函数去实现。
下面我们先看一下#xff0c;模板图片和需要匹配的图片#xff1a…python opencv -模板匹配
模板匹配就是我们现有一个模板和一个图片然后在这个图片中寻找和模板近似的部分。
在opencv 中主要通过cv2.matchTemplate这个函数去实现。
下面我们先看一下模板图片和需要匹配的图片 模板 需要匹配的图片 下面来看代码
import cv2
import copy
import math
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import ospathrD:\learn\photo\cv\lena.jpg
path2rD:\learn\photo\cv\face.jpgimgcv2.imread(path,1)img_graycv2.imread(path,0)img_templatecv2.imread(path2,1)img_gray_templatecv2.imread(path2,0)def cv_show(name,img):cv2.imshow(name,img)#cv2.waitKey(0),接收0表示窗口暂停cv2.waitKey(0)#销毁所有窗口cv2.destroyAllWindows()print(img.shape)
print(img_template.shape)
h, w img_template.shape[:2]- TM_SQDIFF计算平方不同计算出来的值越小越相关
- TM_SQDIFF_NORMED计算归一化平方不同计算出来的值越接近0越相关
- TM_CCORR计算相关性计算出来的值越大越相关
- TM_CCOEFF计算相关系数计算出来的值越大越相关
- TM_CCORR_NORMED计算归一化相关性计算出来的值越接近1越相关
- TM_CCOEFF_NORMED计算归一化相关系数计算出来的值越接近1越相关
链接https://docs.opencv.org/3.3.1/df/dfb/group__imgproc__object.html#ga3a7850640f1fe1f58fe91a2d7583695d
methods [cv2.TM_CCOEFF, cv2.TM_CCOEFF_NORMED, cv2.TM_CCORR,cv2.TM_CCORR_NORMED, cv2.TM_SQDIFF, cv2.TM_SQDIFF_NORMED]res cv2.matchTemplate(img, img_template, cv2.TM_SQDIFF)
print(res.shape)
# exit()min_val, max_val, min_loc, max_loc cv2.minMaxLoc(res)
print(min_val, max_val, min_loc, max_loc)for meth in methods:img2 img.copy()# 匹配方法的真值method eval(meth)print(method)res cv2.matchTemplate(img, 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_locelse:top_left max_locbottom_right (top_left[0] w, top_left[1] h)# 画矩形cv2.rectangle(img2, top_left, bottom_right, 255, 2)plt.subplot(121), plt.imshow(res,gray)plt.xticks([]), plt.yticks([]) # 隐藏坐标轴plt.subplot(122), plt.imshow(img2[:,:,::-1])plt.xticks([]), plt.yticks([])plt.suptitle(meth)plt.show()运行结果如下