使用open3d计算ply模型的法线及显示

好心情美文 / 2024-08-28 / 原文

import open3d as o3d
import numpy as np

# 加载点云数据
pcd = o3d.io.read_point_cloud("test.ply")

# 设置法线估计的搜索参数
search_param = o3d.geometry.KDTreeSearchParamHybrid(radius=0.1, max_nn=30)

# 计算点云的法线
pcd.estimate_normals(search_param=search_param)

# 可选:确保法线的方向一致性
# pcd.orient_normals_consistent_tangent_plane(30)

# 可视化原始点云和计算得到的法线
o3d.visualization.draw_geometries([pcd], point_show_normal=True)

# 如果需要,可以将法线数据转换为NumPy数组进行进一步处理
normals_array = np.asarray(pcd.normals)

# 打印法线数组的前5行,以检查法线数据
print(normals_array[:5])

 

运行效果如下: