【问题标题】:Detecting shape location and heading with opencv使用opencv检测形状位置和航向
【发布时间】:2020-05-13 21:22:20
【问题描述】:

背景

我正在研究一种廉价且简单的方法来跟踪机器人在其环境中,避免使用 gps、编码器等。将有多个机器人瞄准目标区域(参见下面的基本示例),并且计算机应该是向他们提供有关其位置、航向和目标的数据。

接近

我决定使用一个自上而下观察测试区域的相机,加上机器人顶部的彩色形状(例如箭头),并使用 OpenCV 在视频的连续帧中检测它们的位置和方向。

理想情况下,每个机器人都有相当连续的位置和方向数据流,但是我之前使用过 OpenCV 并意识到这可能需要时间。大约(或优于)1Hz 的更新速率是可以接受的(即较低的帧速率/不使用所有帧)。

我之前使用过 OpenCV 对视频中的帧进行 SIFT 过滤,并检测特征以从帧中创建马赛克图像。但是,我发现很难让我目前的知识适应这个特定的问题,而且在线研究并没有真正帮助找到一种简单的方法来检测方向。

问题

可以快速检测图像中形状位置和方向的最简单方法是什么?

【问题讨论】:

    标签: opencv video computer-vision vision


    【解决方案1】:

    您可以简单地使用minAreaRect。您可以参考this example。通过这样做,您将为每个对象获得合适的矩形,然后您可以使用矩形边缘的中点来获得角度。

    注意: 每个拟合矩形都有两个角度,因此您应该创建一种算法来根据您的情况选择正确的角度。

    【讨论】:

    • 感谢您的回复 - 这是我最初想到的方法,但每个矩形的两种可能的解决方案让我很反感。你建议用什么样的算法来纠正这个问题?
    • @S.Dunnim 如果我们谈论您图像中的三角形,您可以根据矩形的短边和长边进行算法。对于旋转数据,minAreaRec是一个非常精确的方法,我在项目中使用过很多次
    • 谢谢,澄清一下,我可以看到如何使用 minAreaRect 来获得两个可能的方向角度。我只是不确定如何选择哪个是正确的?在大多数情况下,我可以使用最近的角度作为参考角度,并选择最接近参考的新角度 - 但是在没有参考角度的过程开始时如何选择?或者当箭头穿过 12 点钟并且 2 个新的可能角度同样接近参考角度时?干杯
    • @S.Dunnim 你说的reference是什么意思?我之前可能误会你了。能说清楚点吗?
    • 对不起。据我了解, minAreaRect 方法将给出对象可以定向的 2 个可能角度。问题是决定哪个是正确的。对于机器人的大部分运动,这很容易,因为它将是最接近前一个角度(“参考”角度)的角度。然而,在决定第一个角度时,没有以前的(“参考”)角度来比较它......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-27
    • 2019-02-25
    相关资源
    最近更新 更多