【Open3D】几何——文件IO

作者 by Tianzhi Jia / 2022-05-08 / 暂无评论 / 242 个足迹

  • 本教程介绍Open3D如何读取和写入基本数据结构。

点云

  • 下面的代码读取和写入点云。
print("Testing IO for point cloud ...")
sample_pcd_data = o3d.data.PCDPointCloud()
pcd = o3d.io.read_point_cloud(sample_pcd_data.path)
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],其中nx,ny,nz是法向量
xyzrgb每行包含[x,y,z,r,g,b],其中r,g,b是在[0, 1]范围内的浮点数
pts第一行是表示点的数量的整数。后续行遵循以下格式之一:[x,y,z,i,r,g,b],[x,y,z,r,g,b],[x,y,z,i][x,y,z],其中x,y,z,idouble类型,r,g,buint8类型
ply请参阅多边形文件格式,ply文件可以同时包含点云和Mesh数据
pcd请参阅点云数据
  • 也可以显式指定文件类型。在这种情况下,文件扩展名将被忽略。
pcd = o3d.io.read_point_cloud("../../test_data/my_points.txt", format='xyz')

Mesh

  • 下面的代码读取和写入Mesh。
print("Testing IO for meshes ...")
knot_data = o3d.data.KnotMesh()
mesh = o3d.io.read_triangle_mesh(knot_data.path)
print(mesh)
o3d.io.write_triangle_mesh("copy_of_knot.ply", mesh)
  • 与点云数据结构相比,Meshesh具有定义3D表面的三角形。
  • 默认情况下,Open3D尝试通过文件扩展名推断文件类型.支持以下Mesh文件类型:
格式描述
ply请参阅多边形文件格式,ply文件可以同时包含点云和Mesh数据
stl请参阅立体光刻
obj请参阅对象文件
off请参阅对象文件格式
gltf/glb请参阅GL传输格式

图像

  • 下面的代码读取和写入图像。
print("Testing IO for images ...")
image_data = o3d.data.JuneauImage()
img = o3d.io.read_image(image_data.path)
print(img)
o3d.io.write_image("copy_of_Juneau.jpg", img)
  • 使用print(img)可轻松显示图像的大小。
  • jpgpng两者图像文件都支持。

独特见解