Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何找到模板匹配的准确度_Python_Numpy_Opencv_Image Processing_Computer Vision - Fatal编程技术网

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函数