1234567891011121314151617181920212223242526272829303132 |
- 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)
- # ==============================================================
|