使用OpenCV确定草绘箭头的方向

时间:2018-04-28 15:34:22

标签: c++ opencv opencv3.0

我有一堆箭头草图,我想确定它们的方向,起点坐标和终点坐标。

我使用的是goodFeaturesToTrack,但我对下一步该做什么一无所知。

这就是我所拥有的

enter image description here

enter image description here

enter image description here

enter image description here

箭头的形状没有限制,它们可以像你想要的那样有风,或者它们可以由直线和直角组成。

我真的很感激任何想法因为我真的迷失了。该项目是关于将有限状态机的草图转换为VHDL代码,并且我已经覆盖了圆圈和字符,因此这是最后一个组件,但我不知道如何解决问题。

1 个答案:

答案 0 :(得分:2)

您可以使用goodFeaturesToTrack而不是使用HoughLines,它会为您提供图片中的所有线条,因此我建议您先进行一些分割以分别获取每个箭头。 HoughLines为您提供极坐标中的所有线条,这对您来说非常合适,因为您可以知道线条的方向。您可以在此处阅读更多内容:https://docs.opencv.org/3.4.0/d9/db0/tutorial_hough_lines.html

对于直线,您的任务很容易,您需要找到在一个点(http://answers.opencv.org/question/92164/how-to-find-coordinates-of-intersection-of-lines-after-using-houghlines/)相交的3个线段。这将是箭头的终点,您可以使用中间线的等式找到起点。

对于曲线,它有点棘手,因为你可能会得到曲线段的几条hough线或根本没有。所以在这种情况下,我建议你将两条线的交点作为终点,然后使用goodFeaturesToTrack然后从最近点到终点开始移动到下一条线,直到你到达终点并选择以此为出发点。

我不知道这是不是最好的解决方案,我自己也没试过,但我希望它可以帮助你或给你指路。