import open3d as o3d import numpy as np # --------------------------- 加载点云 --------------------------- print("->正在加载点云... ") # ply = o3d.io.read_point_cloud("../laser1.ply") pcd = o3d.io.read_point_cloud("./data/PointClound_01.ply") # 展示点云、打印点云 print('pcd data: ~~~~~~~~~~~~~~~~~~~') print(pcd) # print(np.asarray(pcd.points)) # print(np.asarray(pcd.normals)) # print(np.asarray(pcd.covariances)) # print(np.asarray(pcd.colors)) print('end of pcd data ~~~~~~~~~~~~~~~~~~~') axes = o3d.geometry.TriangleMesh.create_coordinate_frame() o3d.visualization.draw([pcd, axes]) # 降采样 pcd = pcd.voxel_down_sample(voxel_size=0.1) o3d.visualization.draw([pcd]) # ------------------------- Alpha shapes ----------------------- alpha = 20 print(f"alpha={alpha:.3f}") mesh = o3d.geometry.TriangleMesh.create_from_point_cloud_alpha_shape(pcd, alpha) mesh.compute_vertex_normals() o3d.visualization.draw_geometries([mesh], mesh_show_back_face=True) volume = mesh.get_volume() # 计算体积 print("体积为:", volume) # ==============================================================