水密性网格生成 及点云体积计算

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)