Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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
如何读取matchTemplate的结果(python中的OpenCV2)_Python_Opencv_Image Processing_Opencv Python_Template Matching - Fatal编程技术网

如何读取matchTemplate的结果(python中的OpenCV2)

如何读取matchTemplate的结果(python中的OpenCV2),python,opencv,image-processing,opencv-python,template-matching,Python,Opencv,Image Processing,Opencv Python,Template Matching,以下代码实际上是我立即打印出来的结果: result = cv.matchTemplate(haystack_img, needle_img, cv.TM_SQDIFF_NORMED 图片大小: 干草堆=27x16 打捆针直径=7x7 然而,我真的不明白这意味着什么 输出将为您提供一个大小为21 x 10的响应图像,其中7 x 7针状img模板从左到右滑动,从上到下滑动,提取与模板一致的每个7 x 7窗口并计算相关性。注意输出的大小减小了。它比搜索图像小,因为假设模板完全适合图像内部 但是,您

以下代码实际上是我立即打印出来的结果:

result = cv.matchTemplate(haystack_img, needle_img, cv.TM_SQDIFF_NORMED
图片大小:

干草堆=27x16 打捆针直径=7x7 然而,我真的不明白这意味着什么

输出将为您提供一个大小为21 x 10的响应图像,其中7 x 7针状img模板从左到右滑动,从上到下滑动,提取与模板一致的每个7 x 7窗口并计算相关性。注意输出的大小减小了。它比搜索图像小,因为假设模板完全适合图像内部

但是,您选择的度量是距离度量cv2.TM_SQDIFF_NORMED。对于此响应图像中的每个元素,它提供了模板和每个窗口之间的差异性。提供最小值的位置意味着,如果将模板的左上角放置在此位置,则该位置是模板与图像最匹配的位置

以下代码将绘制一个边界框,其中模板在haystack图像中最匹配:

结果=cv2.matchTemplatehaystack\u img、针头\u img、cv.TM\u SQDIFF\u NORMED 最小值,最大值,最小位置,最大位置=cv2.minMaxLocresult 左上=最小位置 w、 h=7,7 右下=左上[0]+w,左上[1]+h img_to_show=干草堆img.copy cv2.矩形显示,左上角,右下角,255,2 cv2.imshowResult,img_至_show cv2.0 运行模板匹配,然后使用cv2.minMaxLoc查找最小值和最大值以及它们在图像中的位置。我们希望使用最小值的位置,给定使用距离的方法。min_loc将提供模板最匹配位置左上角的列和行坐标。我们根据模板的尺寸创建右下角坐标,然后创建图像的新副本,并在其上绘制一个白色矩形,表明您是最匹配的模板,然后在最后显示图像。

输出将为您提供一个大小为21 x 10的响应图像,其中7 x 7针头模板在图像上从左到右滑动,从上到下滑动,每个7 x 7窗口重合使用该模板提取并计算相关性。注意输出的大小减小了。它比搜索图像小,因为假设模板完全适合图像内部

但是,您选择的度量是距离度量cv2.TM_SQDIFF_NORMED。对于此响应图像中的每个元素,它提供了模板和每个窗口之间的差异性。提供最小值的位置意味着,如果将模板的左上角放置在此位置,则该位置是模板与图像最匹配的位置

以下代码将绘制一个边界框,其中模板在haystack图像中最匹配:

结果=cv2.matchTemplatehaystack\u img、针头\u img、cv.TM\u SQDIFF\u NORMED 最小值,最大值,最小位置,最大位置=cv2.minMaxLocresult 左上=最小位置 w、 h=7,7 右下=左上[0]+w,左上[1]+h img_to_show=干草堆img.copy cv2.矩形显示,左上角,右下角,255,2 cv2.imshowResult,img_至_show cv2.0
运行模板匹配,然后使用cv2.minMaxLoc查找最小值和最大值以及它们在图像中的位置。我们希望使用最小值的位置,给定使用距离的方法。min_loc将提供模板最匹配位置左上角的列和行坐标。我们根据模板的尺寸创建右下角的坐标,然后创建一个新的图像副本,并在其上绘制一个白色矩形,表明您是最匹配的模板,然后在最后显示图像。

感谢@rayryeng的回复,并对此进行了进一步解释~

结果:

位置0,0为0.05779364 位置0,1为0.03569747 图片大小:

干草堆=27x16 打捆针直径=7x7 由于图像由每个像素进行比较,因此X和Y位置可以计算为

X:27-7+1=21 Y:16-7+1=10 X:0,1,2,3,21=每个列表中的位置 也等于

len(result[0])
len(result)
[

]

Y:0,1,2,3,4,5=列表中的位置也等于

len(result[0])
len(result)
[

]

官方文件:

谢谢@rayryeng的回复,再解释一下~

结果:

位置0,0为0.05779364 位置0,1为0.03569747 图片大小:

干草堆=27x16 打捆针直径=7x7 由于图像由每个像素进行比较,因此X和Y位置可以计算为

X:27-7+1=21 Y:16-7+1=10 X:0,1,2,3,21=每个列表中的位置 也等于

len(result[0])
len(result)
[

]

Y:0,1,2,3,4,5=列表中的位置也等于

len(result[0])
len(result)
[

]

官方文件: