Open3D读取文件

Open3D可以读取点云文件,三角网格文件,也可以读取图片。具体方法如下:

一、点云文件操作

        Open3D支持的文件格式有xyz,xyzn,xyzrgb,pts,ply,pcd等文件。读取的方式也非常简单。data = o3d.io.read_point_cloud("文件名“)

1、读写文件

        函数原型如下:

        open3d.io.read_point_cloud(filenameformat='auto'remove_nan_points=Falseremove_infinite_points=Falseprint_progress=False)

参数解释:

  • filename (str) – 文件路径.

  • format (stroptionaldefault='auto') – 文件格式,如果没有特殊的说明或设置为auto,文件的格式来自文件的扩展名.

  • remove_nan_points (booloptionaldefault=False) – 如果为true,则在点云数据中移除NaN的点。

  • remove_infinite_points (booloptionaldefault=False) – 如果为true,则在点云数据中移除值为无穷的点。

  • print_progress (booloptionaldefault=False) – 如果设置为true,在加载文件时可以看到进度条。

  • 返回值:open3d.geometry.PointCloud

2、保存点云文件

        o3d.io.write_point_cloud("文件名",data),函数原型:open3d.io.write_point_cloud(filenamepointcloudwrite_ascii=Falsecompressed=Falseprint_progress=False)

参数解释:

  • filename (str) – 文件路径.

  • pointcloud (open3d.geometry.PointCloud) – PointCloud对象

  • write_ascii (booloptionaldefault=False) – 如果为true,则输出文件为Asscii格式,否则为二进制格式.

  • compressed (booloptionaldefault=False) – 如果为true,则对文件进行压缩.

  • print_progress (booloptionaldefault=False) – 如果为true,则显示进度条.

  • 返回值:bool

3、举例

pcd = o3d.io.read_point_cloud("bunny.ply")
print(pcd)  # 输出点云个数
o3d.io.write_point_cloud("copy_of_fragment.pcd", pcd)  # 保存点云数据
o3d.visualization.draw_geometries([pcd], width=800, height=600)   # 显示点云

二、读取/保存图片

读取和保存图片的函数很简单,直接上例子。

img = o3d.io.read_image("文件名")
print(img)
o3d.io.write_image("文件", img)
o3d.visualization.draw_geometries([img], window_name="Open3D图像显示",
                                  width=800, height=600,
                                  left=100, top=200,
                                  mesh_show_back_face=False)

三、三角网格文件

        Open3D支持读取的网格文件有:ply(Polygon File Format),STL(StereoLighography),OBJ(Objects Files),OFF(Object file format),GLTF/GLB(GL Transmission Format)。

1、读取文件

        函数原型如下:

open3d.io.read_triangle_mesh(filenameenable_post_processing=Falseprint_progress=False)

参数解释:

  • filename (str) – 文件路径.

  • enable_post_processing (booloptionaldefault=False) –

  • print_progress (booloptionaldefault=False) – 如果为true,则在控制台可以看到进度条。

  • 返回值:open3d.geometry.TriangleMesh

2、保存文件

        函数原型如下:

open3d.io.write_triangle_mesh(filenamemeshwrite_ascii=Falsecompressed=Falsewrite_vertex_normals=Truewrite_vertex_colors=Truewrite_triangle_uvs=Trueprint_progress=False)

参数解释:

  • filename (str) – 文件路径.

  • mesh (open3d.geometry.TriangleMesh) – TriangleMesh对象

  • write_ascii (booloptionaldefault=False) – 如果为true,则用Ascii格式保存,否则用二进制保存文件。

  • compressed (booloptionaldefault=False) – 如果为true,则对文件进行压缩.

  • write_vertex_normals (booloptionaldefault=True) – 如果为false,则不存储顶点的法线信息.

  • write_vertex_colors (booloptionaldefault=True) – 如果为false,则不存储顶点的颜色信息.

  • write_triangle_uvs (booloptionaldefault=True) – 如果为false,则不存储任何三角形UV信息。对于OBJ格式文件,只有在设置为true时才保存mtl文件。

  • print_progress (booloptionaldefault=False) – 如果设置为true,则在控制台显示进度条。

  • 返回值:bool

3、举例

knot_data = o3d.data.KnotMesh()
print(f"Reading mesh from file: knot.ply stored at {knot_data.path}")
mesh = o3d.io.read_triangle_mesh(knot_data.path, print_progress=True)
print(mesh)  # 此处会打印文件的顶点个数和三角形的个数
print("Saving mesh to file: copy_of_knot.ply")
o3d.io.write_triangle_mesh("copy_of_knot.ply", mesh)
o3d.visualization.draw_geometries([mesh], window_name="Open3D三角网格",
                                  width=800, height=600,
                                  left=100, top=200,
                                  mesh_show_back_face=False)

 四:总结

        本结主要介绍了Open3D操作常见点云和三角网格文件的函数及其用法。Open3D还支持其他格式的文件,待下一节与大家分享。

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值