点云的凹多边形和凸多边形边界获取(附open3d python 代码)

先声明,点云的多边形求取必须在平面点云的基础上进行,可以把点云投影到平面,也可以直接把Z轴全部变为0,或者直接去掉Z轴数据不要来抽取平面点云

凸多边形边界:

import open3d as o3d
import numpy as np
from scipy import spatial
import matplotlib.pyplot as plt


pcd = o3d.io.read_point_cloud("xxx.pcd")
# 可视化点云
o3d.visualization.draw_geometries([pcd])
# 获取点云三维坐标
points = np.asarray(pcd.points)
# 获取点云XY坐标
point2d = np.c_[points[:, 0], points[:, 1]]
# 获取平面点云的凸多边形边界
ch2d = spatial.ConvexHull(point2d)
# 可视化凸多边形边界结果


plt.figure()
# 方法二:直接可视化
ax = plt.subplot(aspect="equal")
spatial.convex_hull_plot_2d(ch2d, ax=ax)
plt.show()

凹多边形边界:  需要安装的 pclpy 的python whl 安装文件 在我的另外一篇文章中有下载链接,麻烦自己寻找下载


from pclpy import pcl

# -------------------------加载点云数据------------------------------
cloud = pcl.PointCloud.PointXYZ()

if pcl.io.loadPCDFile(
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Open3D是一个开源的多功能三维工具箱,可以用于处理和分析3D数据。其中包括了点和网格处理等核心模块,并且还支持了视觉和深度学习模块,可以快速地完成各种三维数据处理任务。在Open3D中,可以使用API来进行平面点边界提取。 具体的代码实现如下所示: ```python import open3d as o3d import numpy as np # 读入点数据 pcd = o3d.io.read_point_cloud("cloud.ply") # 通过平面分割,获得每个平面的参数 plane_model, inliers = pcd.segment_plane(distance_threshold=0.01, ransac_n=3, num_iterations=1000) \[a, b, c, d\] = plane_model # 使用inliers来提取点 inlier_cloud = pcd.select_by_index(inliers) # 使用Open3D中的函数来提取点边界 hull, _ = inlier_cloud.compute_convex_hull(qhull_options="QJ Pp") # 将生成的凸多边形存储为文件 o3d.io.write_point_cloud("output.ply", hull) ``` 以上代码首先读入了点数据,然后通过平面分割得到每个平面的参数。接着使用inliers来提取点,并使用Open3D中的函数来计算点凸多边形轮廓。最后将生成的凸多边形存储为文件。 这种方法可以用于提取平面点边界,对于计算机视觉领域中需要对点中物体的边界进行提取的情况,使用Open3D库可以简化操作并提高效率。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* *3* [平面点边界提取——Open3D实现方案](https://blog.csdn.net/update7/article/details/129870713)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

点云-激光雷达-Slam-三维牙齿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值