Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用OpenCV确定略图箭头的方向_C++_Opencv_Opencv3.0 - Fatal编程技术网

C++ 使用OpenCV确定略图箭头的方向

C++ 使用OpenCV确定略图箭头的方向,c++,opencv,opencv3.0,C++,Opencv,Opencv3.0,我有一堆箭头草图,我想确定它们的方向,起点坐标和终点坐标 我正在使用goodFeaturesToTrack,但我真的不知道下一步该怎么做 这就是我得到的 箭头的形状没有任何限制,它们可以是任意风,也可以由直线和直角组成 我真的很感激任何想法,因为我真的迷路了。该项目是关于将有限状态机的草图转换为VHDL代码,我已经涵盖了圆圈和字符,因此这是最后一个组件,但我不知道如何解决这个问题。您可以使用HoughLines而不是使用goodFeaturesToTrack,这将为您提供图像中的所有行我

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

我正在使用
goodFeaturesToTrack
,但我真的不知道下一步该怎么做

这就是我得到的

箭头的形状没有任何限制,它们可以是任意风,也可以由直线和直角组成


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

您可以使用
HoughLines
而不是使用
goodFeaturesToTrack
,这将为您提供图像中的所有行我建议您先进行一些分割,以分别获得每个箭头
HoughLines
提供极坐标中的所有直线,这非常适合您的情况,因为您可以知道直线的方向。您可以在此处阅读更多内容:

对于直线,您的任务很简单,您需要找到3条相交于一点的线段()。这将是箭头的终点,您可以使用中线的方程式找到起点

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


我不知道这是否是最好的解决方案,我自己也没有尝试过,但我希望它能帮助您或为您提供一些指导。

我会尝试使用Canny边缘检测器。但是你的问题太宽泛了,我不知道
Canny
有什么帮助,你能再解释一点吗?这是
goodFeaturesToTrack
的前一步。是的,我同意它是广泛的,但这是因为我已经用尽了我所有的想法,我有点绝望地希望已经解决了这个问题的人会看到这个问题。此外,我不需要一个完整的解决方案,只需要一个新的建议,我可以试试。我想看看箭头的尖端——至于如何,我现在真的没有太多线索(我也有点醉了:D)箭头尖端看起来像是一个三条线与附近的点几乎相交的地方。我知道这相当模糊,但这可能是有用的观察。你是否找到了获得所需结果的最佳方法,我使用了hough线,但我只得到一条直线,甚至没有线段,如果我找到了线段,那么我至少找到了起点和终点,然后我可以定义指针的位置(箭头)。如果你知道如何解决这个问题,请上传你的解决方案。非常感谢你,肯定提高了准确性,尽管仍然不完美。有时甚至连箭头处的线条都没有被检测到,尽管也许多玩弄一些参数可能会奏效。不客气,我很高兴能帮上忙。我建议您在检测箭头之前先进行一些分割。希望有帮助。