mission_alpha_shaped_mesh.py 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. import open3d as o3d
  2. import numpy as np
  3. # --------------------------- 加载点云 ---------------------------
  4. print("->正在加载点云... ")
  5. # ply = o3d.io.read_point_cloud("../laser1.ply")
  6. pcd = o3d.io.read_point_cloud("./data/PointClound_01.ply")
  7. # 展示点云、打印点云
  8. print('pcd data: ~~~~~~~~~~~~~~~~~~~')
  9. print(pcd)
  10. # print(np.asarray(pcd.points))
  11. # print(np.asarray(pcd.normals))
  12. # print(np.asarray(pcd.covariances))
  13. # print(np.asarray(pcd.colors))
  14. print('end of pcd data ~~~~~~~~~~~~~~~~~~~')
  15. axes = o3d.geometry.TriangleMesh.create_coordinate_frame()
  16. o3d.visualization.draw([pcd, axes])
  17. # 降采样
  18. pcd = pcd.voxel_down_sample(voxel_size=0.1)
  19. o3d.visualization.draw([pcd])
  20. # ------------------------- Alpha shapes -----------------------
  21. alpha = 20
  22. print(f"alpha={alpha:.3f}")
  23. mesh = o3d.geometry.TriangleMesh.create_from_point_cloud_alpha_shape(pcd, alpha)
  24. mesh.compute_vertex_normals()
  25. o3d.visualization.draw_geometries([mesh], mesh_show_back_face=True)
  26. volume = mesh.get_volume() # 计算体积
  27. print("体积为:", volume)
  28. # ==============================================================