python点云数据读写、下采样与法线估计(open3D安装)1.点云库opend3d的安装
Anaconda(python3.7):
安装open3d:
pip install open3d-python
or
pip install open3d
上述两种安装⽅式得到的open3d版本不同,有些函数有很⼤不同。尤其是在点云采样和法线计算时:
pip install open3d-python:
pcd_new = ry.voxel_down_sample(pcd, voxel_size)
法线估计暂未到解决办法
pip install open3d:
pcd.uniform_down_sample(value)
pcd.voxel_down_sample(value)
downpcd.estimate_normals(search_ry.KDTreeSearchParamHybrid(radius=0.1, max_nn=30))
2. 数据的读写
open3d ⽀持点云、mesh、图⽚数据的读写。
2.1 点云数据的读写,如.xyz .xyzn .xyzrgb .pts .ply .pcd 格式⽂件:
pcd = ad_point_cloud("xxx.ply")
python怎么读的o3d.io.write_point_cloud("xxx.pcd",pcd)
2.2 mesh 数据的读写,如.ply  .stl  .obj  .off  .gltf 格式⽂件:
mesh = ad_triangle_mesh("xxx.ply")
o3d.io.write_triangle_mesh("xxx.ply", mesh)
# obj顶点显⽰
pcd = ry.PointCloud()
pcd.points = o3d.utility.Vector3dVector(mesh.vertices)
### 三⾓⾯⽚法向量
meshpute_vertex_normals()
print(np.iangle_normals))# 打印法线信息
2.3 图⽚数据的读写:
img = ad_image("xxx.jpg")
o3d.io.write_image("xxx.jpg", img)
也可以先读成numpy,然后转换成pcd
pcd = ry.PointCloud()
pcd.points = o3d.utility.Vector3dVector(numpyPointList)
3. 数据显⽰
o3d.visualization.draw_geometries([pcd],width=910,height=540)
4. 点云采样:
均匀下采样:通过收集每第n个点来对点云进⾏下采样。最远点采样FPS。
体素下采样:把点云分配在三维的⽹格中,每个⼩体素包含了若⼲个点,取中⼼点或离中⼼点最近的点为采样点。
曲率下采样:云曲率越⼤的地⽅,采样点个数越多。
曲⾯均匀采样:从三⾓⽹格曲⾯数据均匀采样得到点云。
泊松磁盘采样:也是对mesh 进⾏采样得到点云。
UniformSampling (10):                                    FPS(2048*7):相⽐VoxelSampling: ,⾮常耗时
VoxelSampling(0.5):                                            CurvatureSampling:
UniformSampling_of_Surfaces(2048*7):            PoissonDiskSampling(2048*7):
5. 顶点法线估计(Vertex normal estimation)
downpcd.estimate_normals(search_ry.KDTreeSearchParamHybrid(radius=0.1, max_nn=30))
o3d.visualization.draw_geometries([downpcd], window_name='Open3D downSample Normals', width=1920,
height=1080, left=50, top=50, point_show_normal=True, mesh_show_wireframe=False, mesh_show_back_face=False)
VoxelSampling(0.5):                                      PoissonDiskSampling(2048):
参考:
Enable Ginger Cannot connect to Ginger Check your internet connection
or reload the browserDisable in this text fieldRephraseRephrase current sentence99+Edit in Ginger×