import open3d as o3d
import numpy as np
"""
radio:切分半径
path:点云文件路径
index_of_point:目标点云索引
"""
def seg_by_point(path,index_of_point,radio):
pcd = o3d.io.read_point_cloud(path)
points = np.asarray(pcd.points)
kdtree = o3d.geometry.KDTreeFlann(pcd)
#用于保存区域内的点云坐标
new_pcPoints = []
[_, idx, dis] = kdtree.search_radius_vector_3d(points[index[i]],radio)
for i in idx:
new_pcPoints.append(points[i])
new_pcd = o3d.geometry.PointCloud()
new_pcd.points = o3d.utility.Vector3dVector(new_pcPoints )
o3d.io.write_point_cloud("after_seg.pcd", new_pcd)
o3d.visualization.draw_geometries([new_pcd], point_show_normal=False)
根据目标点切分点云数据并保存
最新推荐文章于 2024-05-03 11:07:56 发布