open3d,读取stl/ply/obj/off/gltf/glb三维模型,并转换成点云,保存

1.三维模型获取

  • 可以自己用建模软件建立一个模型
  • 本案例使用模型的下载地址
  • 可以从free3d免费下载,无需注册

open3d,读取stl/ply/obj/off/gltf/glb三维模型,并转换成点云,保存_第1张图片

2.导入open3d

import open3d as o3d

3.open3d模型读取与可视化

#模型路径,支持后缀:stl/ply/obj/off/gltf/glb
path_obj = 'Rmk3.obj'
#读入网格模型
mesh = o3d.io.read_triangle_mesh(path_obj)
#计算网格顶点
mesh.compute_vertex_normals()
#可视化网格模型
o3d.visualization.draw_geometries([mesh])
  • 效果:
    open3d,读取stl/ply/obj/off/gltf/glb三维模型,并转换成点云,保存_第2张图片

4.均匀采样生成点云并可视化

#均匀采样5000个点
pcd = mesh.sample_points_uniformly(number_of_points=5000)
#可视化点云模型
o3d.visualization.draw_geometries([pcd])
  • 效果:
    open3d,读取stl/ply/obj/off/gltf/glb三维模型,并转换成点云,保存_第3张图片

5.泊松采样并可视化

  • 均匀采样会在表面出现采样点聚集的现象,open3d实现了一种基于poisson_disk方法的采样,能实现表面的均匀采样
  • 原理:参数umber_of_points是最终采样的点数量,实际会先采样init_factor乘umber_of_points数量的点,然后去除多余的点
  • 代码实现:
#poisson_disk方法采样5000个点
pcd = mesh.sample_points_poisson_disk(number_of_points=5000, init_factor=10)
#可视化点云模型
o3d.visualization.draw_geometries([pcd])
  • 效果:可以看出边缘点分布更加均匀,但是耗时更长
    open3d,读取stl/ply/obj/off/gltf/glb三维模型,并转换成点云,保存_第4张图片

6.保存点云文件

#保存
o3d.io.write_point_cloud("Rmk3.pcd", pcd)

你可能感兴趣的:(计算机视觉,open3d,open3d,点云,三维,机器人操作,人工智能)