opencv - 如何通过点云拟合曲线?开放式计算机/C++

标签 opencv cloud curve points

简单的问题。如何像人类一样通过所有这些点绘制曲线?

我的示例输入图像在这里:

enter image description here

最佳答案

你有很多选择。

1) 如果像示例中的点大部分位于一条直线上,最简单的方法是使用形态变换 (http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_morphological_ops/py_morphological_ops.html)。例如,如果你使用闭合(即扩张和腐 eclipse ),你将首先通过扩张使点变大(这样它们就会相互接触),然后你将腐 eclipse (这样它们就会回到原来的状态)大小,同时仍然相互接触)。那可以模仿一条线。

2) 您可以使用 OpenCV 的 fitLine 函数,将一条线拟合到 2D 或 3D 集。 ( http://docs.opencv.org/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html )

3) 可以逐点加入。但是为此,您需要猜测线段的方向,并相应地对点进行排序。可以使用OBB(oriented bounding box)结构来保存属于某些线段的点,然后使用OBB的主导轴作为线段。

关于opencv - 如何通过点云拟合曲线?开放式计算机/C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32595265/

相关文章:

c# - 在一条消息中将多个元素添加到 Azure 队列

java - 减少线条的粗细

Azure 计算 : OS Patching, 更新和停机

java - 是否可以在分布式环境中将 RMI 与循环负载均衡器一起使用?

python - 无法在 Ubuntu 上使用 OpenCV 和 Python 捕获视频

opencv - 如何通过了解像素和相机与物体之间的距离来计算图像尺寸?

css - 如何在 bottom-border-radius 旁边创建底部曲线

android - 在 Android canvas 中绘制 2D 曲线?

c++ - 为什么 OpenCV 会为此代码发出 "Bad flag in unknown function"?

java - 你如何将本地库链接到 IntelliJ 中的 jar?