点云的凹多边形和凸多边形边界获取(附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(

你可能感兴趣的:(激光雷达,点云,c++为主,python,开发语言,算法,点云)