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) # 显示点云


open3d点云配准如何使用gpu open3d读取点云_python

二、读取/保存图片

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

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点云配准如何使用gpu open3d读取点云_ci_02

 四:总结

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