文件读取和保存
本教程演示了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
格式。