我在opencv和模板匹配上有点麻烦,所以我希望这里有人能帮助一个迷失的灵魂。
因此,作为我正在使用的代码的一部分,我有以下两行代码,我不太理解。
result = cv2.matchTemplate(edged, template, cv2.TM_CCOEFF)
(_, maxVal, _, maxLoc) = cv2.minMaxLoc(result)
根据我的理解,第一行在变量“result”中存储了一个相关系数。这又被传递到cv2.minMaxLoc(...)
中,进而生成一个由(minVal,maxVal,minLoc,maxLoc)组成的4元素数组,我们只对maxVal和maxLoc感兴趣。
在打印maxVal的值时,根据模板、照明条件等,我得到的值似乎介于2000000到7000000之间
我的问题如下:
马克斯瓦尔是什么意思?
麦克斯瓦尔的射程是多少?
什么物理特性影响maxVal的值?
提前感谢您的帮助和指导!
如果裁剪与模板最匹配的图像区域,则互相关函数的峰值为
当图像更亮、模板更亮和模板更大时,该值将变大。
正如其他答案已经解释的那样,您是基于互相关进行匹配的。所以maxVal是互相关的最大值。很难对这个范围作出一般性的猜测。但是您可以通过以下方法将范围限制为
[0, 1]
理想情况下,
cv2.matchTemplate
返回一个相关映射,本质上是一个灰度图像,其中每个像素表示该像素的邻域与模板匹配的程度。您建议我们只对
maxLoc
和maxVal
感兴趣,这不是真的,这取决于您在匹配模板时考虑的相关性类型。现在,对于您的问题,
minMaxLoc
函数返回Mat
或array
中的最大和最小强度值以及这些强度的位置。MaxLoc表示由
matchTemplate
返回的图像中的最高强度在哪里,这将对应于图像w.r.t.与模板的最佳匹配(仅对于特定的相关方法,对于TM SQDIFF或tmsqdiff赋范的最佳匹配将是minVal
)。因为
matchTemplate
返回的图像是灰度的,所以范围应该取决于原始图像,所以2000000到7000000对我来说有点不正常。唯一影响
maxVal
的“物理特性”应该是模板与图像的关联度,而不是其他的。希望有帮助!
相关问题 更多 >
编程相关推荐