【问题标题】:The matching methods for matchTemplate() in opencv " cv2.TM_CCORR_NORMED" and "cv.CV_COMP_BHATTACHARYYA" give the same measureopencv "cv2.TM_CCORR_NORMED" 和 "cv.CV_COMP_BHATTACHARYYA" 中 matchTemplate() 的匹配方法给出了相同的度量
【发布时间】:2014-06-04 10:54:00
【问题描述】:

您好,我想提醒您,openCV matchTemplate() 方法存在一些问题。根据书 bhattacharya 系数与归一化互相关完全不同,但是当我尝试这段代码时,每个图像的距离都相同。任何人都可以将此通知带给 opencv 开发人员并尝试说明为什么会发生这种情况。我试图使用这两种方法找到距离度量

path1 = 'D:/cat1.png'
path2 = 'D:/cat2.png'
im1=cv2.imread(path1, cv2.CV_LOAD_IMAGE_GRAYSCALE)
im2=cv2.imread(path2, cv2.CV_LOAD_IMAGE_GRAYSCALE)
result = cv2.matchTemplate(im1,im2,cv.CV_COMP_BHATTACHARYYA) #Bhattacharya Coefficient
result2=cv2.matchTemplate(im1,im2,cv2.TM_CCORR_NORMED)       #Normalized Cross Correlation

print"BCC :",result
print '\n'
print"NCC :",result2

【问题讨论】:

    标签: python python-2.7 opencv distance cross-correlation


    【解决方案1】:

    难怪。

    除了 CV_COMP_BHATTACHARYYA 不是 valid compare flag for matchTemplate 之外,

    CV_COMP_BHATTACHARYYA 和 TM_CCORR_NORMED 在后台解析为相同的枚举值 3。

    所以基本上你做了两次同样的事情。

    【讨论】:

    • 那么我不应该使用哪一个??哪个是错误的 - Bhattacharya 或相关性?
    • BHATTACHARYYA 。您只能使用 TM_* (同样,这更像是一个“语义”错误。python 只查看数值)
    • @berak- 感谢您的建议,感谢您的帮助。我希望这会对许多人有所帮助。
    猜你喜欢
    • 2014-02-26
    • 2016-06-09
    • 1970-01-01
    • 2018-09-03
    • 1970-01-01
    • 2018-08-29
    • 2018-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多