open3d 如何由点云生产水密性网格(是为了计算点云体积),如果有直接计算点云体积的办法更好。求赐教!!
方法一:
import open3d as o3d
# 加载点云
pcd = o3d.io.read_point_cloud("point_cloud.ply")
# 执行Poisson重建算法
mesh, densities = o3d.geometry.TriangleMesh.create_from_point_cloud_poisson(
pcd, depth=8, scale=1.1, linear_fit=False)
# 生成水密性网格
mesh.compute_vertex_normals()
o3d.geometry.TriangleMesh.compute_triangle_normals(mesh)
o3d.geometry.TriangleMesh.compute_vertex_area(mesh)
o3d.geometry.TriangleMesh.compute_triangle_area(mesh)
# 计算网格体积
volume = mesh.get_volume()
print("点云体积为:", volume)
方法二:
import open3d as o3d
# 加载点云
pcd = o3d.io.read_point_cloud("point_cloud.ply")
# 计算点云体积
volume = pcd.get_volume()
print("点云体积为:", volume)