如何通过点云拟合曲线?OpenCV/C++;
简单的问题。如何像人类那样画出穿过所有这些点的曲线 我的示例输入图像如下: 你有很多选择 1) 如果点大部分如示例中所示在一条线上,最简单的方法是使用形态学变换()。例如,如果使用“闭合”(即“扩张和侵蚀”),则首先通过扩张使点变大(以便它们彼此接触),然后进行侵蚀(以便它们在彼此接触的情况下恢复到原始大小)。可以模仿线条的 2) 您可以使用OpenCV的fitLine功能,该功能将直线拟合到二维或三维集合。()如何通过点云拟合曲线?OpenCV/C++;,opencv,cloud,curve,points,Opencv,Cloud,Curve,Points,简单的问题。如何像人类那样画出穿过所有这些点的曲线 我的示例输入图像如下: 你有很多选择 1) 如果点大部分如示例中所示在一条线上,最简单的方法是使用形态学变换()。例如,如果使用“闭合”(即“扩张和侵蚀”),则首先通过扩张使点变大(以便它们彼此接触),然后进行侵蚀(以便它们在彼此接触的情况下恢复到原始大小)。可以模仿线条的 2) 您可以使用OpenCV的fitLine功能,该功能将直线拟合到二维或三维集合。() 3) 你可以一点一点地连接。但是,为此,您需要猜测线段的方向,并相应地对点进行排序
3) 你可以一点一点地连接。但是,为此,您需要猜测线段的方向,并相应地对点进行排序。您可以使用OBB(定向边界框)结构来保持属于某些线段的点,然后使用OBB的主导轴作为线段。正如ilke444所说,我将使用形态学闭合操作,甚至放大几次,然后使用“骨架”操作符 在你有了一条漂亮的细线之后,我想你需要的是一条连续的轮廓线,而不一定是直线。所以你可能需要使用
ApproxPolyDP
:
它返回一个描述轮廓的点列表,您可以设置其精度。您的问题太广泛,无法在这里回答。或者,你可以。对我来说似乎是合法的。是的。这是图像上的线条,但捕捉不好。我所有的图片都会像这样。非常感谢。我不知道fitLine函数的存在。我尝试了你们所描述的,但找到骷髅花了很多时间。谢谢你们快速的回答。我现在知道该怎么办了!