OpenCV 2.4.8(Python)确定箭头方向

6
我目前正在进行一个项目,需要确定箭头的方向。这些箭头将被用作机器人输入,以确定它应该朝哪个方向移动。

我使用带有Ubuntu和OpenCV 2.4.8的Beaglebone Black。我已经尝试使用SURF,ORB,SIFT,Moments和BFMatcher进行实验。我还没有找到一种可靠的方法来确定箭头的方向。由于我们将使用视频帧,因此需要实时完成。

我想知道是否有人可以提供一种可靠的解决方案来确定箭头的方向?

以下是一个样例图像:

1个回答

10
这是一些方法,我认为它们可以适用于您提供的图像。
由于您的箭头图像每个角度都如下图所示,您始终可以将箭头尖端视为角度接近90度的角,以及与之相邻的角度接近45度的角。
也就是说,找出箭头尖端,计算构成箭头指针的相邻线的角度,并相加,这将是您的箭头方向。

enter image description here

所以,请尝试使用

  1. 查找轮廓和approxPolyDP

  2. 查找每条线的角度以及拐角(相邻线之间的角度)。

  3. 使用上述拐角标准搜索箭头的尖端。

  4. 现在您已经获得了箭头指针和相邻线(带有角度),将这两条线的结果作为您的方向,即加起来的角度。

另外,参见此链接可能会有所帮助。


所以我正在使用我上面发布的图像,并运行以下程序: http://i.imgur.com/0myNfap.png我得到了以下输出: http://i.imgur.com/yxpqlz7.png我不确定搜索箭头尖的最佳方法是什么? - Knoose
@Knoose 将 approxPolyDP() 中的 epsilon 值增加,直到您的箭头拥有 7 个角点为止。 - Haris
我最终使用了cv2.goodFeaturesToTrack()。我让它在箭头的裁剪图像上找到了7个感兴趣的点。这很有效,因为图像的裁剪去除了我的“道路”线条,而cv2.goodFeaturesToTrack()得到了我需要的点。我还自己创建了一个算法来检测方向,它非常可靠。感谢您的帮助! - Knoose
这确实也帮助了我!谢谢。 - Ivantha
我在大学项目中几乎做了完全相同的事情。经过多次尝试和错误,我最终采用了非常类似的方法。如果有人感兴趣,请查看 https://github.com/NewDevices/football_project ,寻找 object_finder.pyfind_arrow 方法。 - Hendrikto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接