使用open3d计算ply模型的法线及显示
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])
运行效果如下: