Python 如何找到模板匹配的准确度
我正在进行模板匹配Python 如何找到模板匹配的准确度,python,numpy,opencv,image-processing,computer-vision,Python,Numpy,Opencv,Image Processing,Computer Vision,我正在进行模板匹配 现在,我想做的是找到模板匹配的准确性 我已经做了模板匹配,但是我如何获得准确度呢 我想我必须减去匹配的区域和模板图像。 我如何做到这一点 代码 import cv2 as cv import numpy as np import matplotlib.pyplot as plt img = cv.imread('image.jpg',0) img1 = img.copy() template = cv.imread('template.jpg',0) w, h = temp
现在,我想做的是找到模板匹配的准确性
我已经做了模板匹配,但是我如何获得准确度呢 我想我必须减去匹配的区域和模板图像。 我如何做到这一点 代码
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img = cv.imread('image.jpg',0)
img1 = img.copy()
template = cv.imread('template.jpg',0)
w, h = template.shape[::-1]
method = ['cv.TM_CCOEFF_NORMED','cv.TM_CCORR_NORMED']
for meth in method:
img = img1.copy()
method = eval(meth)
res = cv.matchTemplate(img,template,method)
min_val, max_val, min_loc, max_loc = cv.minMaxLoc(res)
bottom_right = (top_left[0] + w, top_left[1] + h)
cv.rectangle(img,top_left, bottom_right, 255, 2)
plt.subplot(121)
plt.imshow(res,cmap = 'gray')
plt.title('Matching Result')
plt.subplot(122)
plt.imshow(img,cmap = 'gray')
plt.title('Detected Point')
plt.show()
有几个例子可以用来比较图像。其中包括:
所有这些都需要对图像的像素值进行一些基本操作以进行比较。请不要使用绝对dif或任何类似的方法来计算精度。变量
min\u val、max\u val
中已经有精度值
OpenCV模板匹配用于计算匹配。因此,当您使用cv.matchTemplate(img,template,method)
时,存储在res
图像中的值就是这种相关性的结果
因此,当您使用cv.minMaxLoc(res)
时,您正在计算此相关性的最小和最大结果。我只需使用max\u val
来告诉我它匹配得有多好。由于min\u val
和max\u val
都在[-1.0,1.0]
范围内,如果max\u val
为1.0,我将其视为100%匹配,0.5的max\u val
视为50%匹配,依此类推
我曾尝试使用
min_val
和max_val
组合来缩放值以获得更好的理解,但我发现简单地使用max_val
可以获得所需的结果 opencv具有absdiff函数