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

04-02 阅读 0评论

1.三维模型获取

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

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

    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三维模型,并转换成点云,保存

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

      #均匀采样5000个点
      pcd = mesh.sample_points_uniformly(number_of_points=5000)
      #可视化点云模型
      o3d.visualization.draw_geometries([pcd])
      
      • 效果:

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

        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三维模型,并转换成点云,保存

            6.保存点云文件

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

免责声明
本网站所收集的部分公开资料来源于AI生成和互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,人围观)

还没有评论,来说两句吧...

目录[+]