答案 0 :(得分:2)
你有很多选择。
1)如果这些点大部分都在一行中,那么最简单的就是使用形态变换(http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_morphological_ops/py_morphological_ops.html)。例如,如果你使用闭合(扩张和侵蚀),你将首先通过扩张使点更大(以便它们相互接触),然后你会腐蚀(这样他们将回到他们原来的大小,但仍然相互接触)。这可以模仿一条线。
2)您可以使用OpenCV的fitLine功能,它适合2D或3D设置的线条。 (http://docs.opencv.org/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html)
3)你可以一点一点地加入。但是,您需要猜测线段的方向,并相应地对点进行排序。您可以使用OBB(定向边界框)结构来保存属于某些线段的点,然后使用OBB的主轴作为线段。
答案 1 :(得分:1)
如ilke444
所说,我会使用形态学关闭操作,甚至扩张几次,然后使用'骨架'操作符。
在你有一条漂亮的细线之后,我想你想要一个连续的轮廓,不一定是直线。所以你可能想要使用ApproxPolyDP
:
http://docs.opencv.org/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html#approxpolydp
它返回描述轮廓的点列表,您可以设置其精度。