【问题标题】:How do I detect small blobs using EmguCV?如何使用 EmguCV 检测小斑点?
【发布时间】:2011-02-24 01:56:13
【问题描述】:

我正在尝试通过头顶网络摄像头跟踪机器人的位置。但是,由于我对机器人或环境没有太多访问权限,所以我一直在处理来自网络摄像头的快照。
机器人有 5 个明亮的 LED 灯,它们的位置与机器人和环境的颜色足够不同,以便轻松隔离。
我已经能够使用 EmguCV 做到这一点,从而产生如下图所示的二进制图像。我现在的问题是,如何获得五个斑点的位置并使用这些位置来确定机器人的位置和方向?

我一直在试验Emgu.CV.VideoSurveillance.BlobTrackerAuto 类,但它顽固地拒绝检测上图中的斑点。作为一个新手,当涉及到任何这些时,我不确定我可能做错了什么。
那么在上图中获取 blob 位置的最佳方法是什么?

【问题讨论】:

    标签: opencv tracking emgucv blobs


    【解决方案1】:

    我不能告诉你如何使用 emgucv 来做这件事,你需要将调用从 opencv 转换为 emgucv。您将使用cv::findContours 获取blob,使用cv::moments 获取blob 的位置(获取blob 中点的公式在cv::moments 的文档中)。然后你会使用cv::estimateRigidTransform 来获取机器人的位置和方向。

    【讨论】:

    • 这对我帮助很大,谢谢。不幸的是,我似乎无法找到一个 emguCV 类似物来估计 RigidTransform,并且不知道如何调用它......我会继续寻找,但到目前为止你已经帮了我很多。
    • @death_au:当你有 5 个位置时,自己做应该不会太难以获得位置和方向。确定有 3 个点的直线中点,使用其他 4 个点的平均值作为位置,从平均值到第 5 个点的方向作为方向。
    • @death_au:在 Emgu 中是 CvInvoke.cvEstimateRigidTransform();
    【解决方案2】:

    我使用 cvBlob 库来处理 blob。昨天我用它来检测小斑点并且工作正常。

    【讨论】:

      【解决方案3】:

      我写了一个 python 模块来做这件事。

      http://letsmakerobots.com/node/38883#comments

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-25
        • 2014-05-13
        • 2012-05-21
        • 2020-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多