这是我用于模板匹配的代码,min_val,max_val,min_loc,max_loc是什么意思?他们是用来干什么的?
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('C:\\machineLearning\\positive\\1.jpg', 0)
img2 = img.copy()
template = cv2.imread('C:\\machineLearning\\positive\\1_.jpg', 0)
w, h = template.shape[::-1]
img = img2.copy()
method = eval('cv2.TM_SQDIFF')
res = cv2.matchTemplate(img,template,method)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
top_left = min_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(res,cmap = 'gray')
plt.title('Matching Result'), plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(img,cmap = 'gray')
plt.title('Detected Point'), plt.xticks([]), plt.yticks([])
plt.suptitle('cv2.TM_SQDIFF')
plt.show()
答案 0 :(得分:0)
如果您通过# Without docs
pip install boto3_type_annotations
# Or with docs
pip install boto3_type_annotations_with_docs
docs,该函数将返回一个模糊的单通道矩阵,其模板和输入图像段的得分匹配。对于cv2.matchTemplate()
方法,得分最高的点将是最亮的,但是对于cv2.TM_CCOEFF
方法,得分最高的点将是最暗的
因此,根据可用的各种方法,有时可能需要获取输出矩阵中最亮的点或最暗的点。 cv2.TM_SQDIFF_NORMED
只是这两个通用操作的统一,在使用cv2.minMaxLoc()
时,您可以忽略用例的minMaxLoc
属性。