文件读取和保存

教程演示了Open3D如何读写基本数据结构。

1. 点云

下面的代码读取和写入点云。

print("Testing IO for point cloud ...")
pcd = o3d.io.read_point_cloud("../../test_data/fragment.pcd")
print(pcd)
o3d.io.write_point_cloud("copy_of_fragment.pcd", pcd)

默认情况下,Open3D尝试通过文件扩展名推断文件类型。支持以下点云文件类型:

格式 描述
xyz 每一行包括[x, y, z],x, y, z是3D坐标
xyzn 每一行包括[x, y, z, nx, ny, nz],xn, yn, zn为法向量
xyzrgb 每一行包括[x, y, z, r, g, b],r, g, b为[0, 1]的浮点数
pts 第一行是表示点数的整数,随后的每一行都包含[x, y, z, i, r, g, b],r, g, b为8位整型
ply 参考Polygon File Format,格式既包含点云格式又包含网格格式
pcd 参考Point Cloud Data

也可以显式指定文件类型。在这种情况下,文件扩展名将被忽略。

pcd = o3d.io.read_point_cloud("../../test_data/my_points.txt", format='xyz')

2. 网格

下面的代码展示了如何读写网格数据。

print("Testing IO for meshes ...")
mesh = o3d.io.read_triangle_mesh("../../test_data/knot.ply")
print(mesh)
o3d.io.write_triangle_mesh("copy_of_knot.ply", mesh)

与点云数据结构相比,网格具有定义三维曲面的三角形。

默认情况下,Open3D尝试通过文件扩展名推断文件类型。支持以下网格文件类型:

格式 描述
ply 参考Polygon File Format,格式既包含点云格式又包含网格格式
stl 参考StereoLithography
obj 参考Object Files
off 参考Object File Format
gltf/glb 参考GL Transmission Format

3. 图片

下面代码展示如何读写图片。

print("Testing IO for images ...")
img = o3d.io.read_image("../../test_data/lena_color.jpg")
print(img)
o3d.io.write_image("copy_of_lena_color.jpg", img)

使用print(img)可以显示图片的大小,支持jpg, png格式。