【问题标题】:How to know if matchTemplate found an object or not?如何知道 matchTemplate 是否找到对象?
【发布时间】:2011-12-15 13:31:33
【问题描述】:

我使用了this的答案并编写了自己的程序,但是我有一个具体的问题。

如果图像没有对象,matchTemplate 不会抛出错误,我不知道有什么方法可以检查matchTemplate 是否找到对象,谁能给我建议,或者给我一个检查这个的函数名。

【问题讨论】:

    标签: opencv object-detection matchtemplate


    【解决方案1】:

    matchTemplate() 返回一个矩阵,其值表示您的对象在该像素中居中的概率。如果您知道该对象(并且只有一个对象)在那里,您所要做的就是寻找最大值的位置。

    如果你不知道,你必须找到最大值,如果它高于某个阈值,你的对象应该在那里。

    现在,选择该阈值很棘手 - 由您自己决定专门为您的应用找到合适的阈值。当然你会有一些误报(当没有对象,但最大值大于阈值时)和一些误报(你的对象没有创建足够大的峰值)

    选择阈值的方法是收集一个相当大的图像数据库,里面有和没有你的物体,并统计物体在里面的时候峰值有多大,没有的时候有多大,并选择最能区分这两个类的阈值

    【讨论】:

    • 如果可以的话,你能说一下我必须使用什么函数或类来检查吗?
    • minMaxLoc(),在您提供的链接中,仅返回最大位置。在正确的位置填写一个双参考,而不是 NULL,您将收到图像中的最大值。 (查看 OpenCV 文档中的 minMaxLoc() )
    • 如果matchTemplate() 返回概率,为什么我会从返回矩阵中得到负值。你有什么想法吗?
    • @G_cy 它可以根据您使用的方法返回负数,如果您只使用一种方法,我建议您阅读每种方法这里是一个显示所有方法的好网站@ 987654321@
    猜你喜欢
    • 1970-01-01
    • 2018-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 2011-12-25
    • 1970-01-01
    • 2017-04-01
    相关资源
    最近更新 更多