文件IO
本教程介绍了Open3D如何读写基本数据结构。
点云(Point Cloud)
下面读取和写入点云的实力。
# -*-coding:utf-8 -*-
import open3d as o3d
# 读取点云
pcd = o3d.io.read_point_cloud("fragment.pcd")
# 打印点云的摘要信息
print(pcd)
# 写点云
o3d.io.write_point_cloud("copy_of_fragment.pcd", pcd)
默认情况下,Open3D尝试通过文件扩展名来推断文件类型。 支持以下点云文件类型:
Format | Description |
---|---|
xyz | 每一行包括 [x,y,z] 三个值,x,y,z 是三维坐标 |
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] 七个值,其中rgb的类型为uint8 |
ply | 这个格式可以包含点云和网格数据,详情请参考这个链接 |
pcd | 详情请参考链接 |
也可以显示的指定文件类型,这样将会忽略文件扩展名。
pcd =o3d.io.read_point_cloud("fragment.txt",format='xyz')
网格(Mesh)
通过以下代码可以读写网格数据。
# -*-coding:utf-8 -*-
import open3d as o3d
# 读取网格
mesh = o3d.io.read_triangle_mesh("knot.ply")
# 打印网格的摘要信息
print(mesh)
# 写网格
o3d.io.write_triangle_mesh("copy_of_knot.ply",mesh)
与点云的数据结构相比,网格(mesh)数据具有定义三维曲面的三角形。与点云数据一样,会自动通过文件类型推断,支持的mesh数据格式如下。
格式 | 描述 |
---|---|
ply | 同点云 |
stl | 请看链接 |
obj | 请看链接 |
off | 请看链接 |
gltf | 请看链接 |
图像(Image)
通过以下代码可以读写图像数据
# -*-coding:utf-8 -*-
import open3d as o3d
# 读取图片
img = o3d.io.read_image("/home/pi/Desktop/pcl/Open3D/examples/test_data/lena_color.jpg")
# 打印图片的摘要信息
print(img)
# 写图片
o3d.io.write_image("copy_of_lena_color.jpg", img)
使用print(img)可以很容易的显示图像的大小。
同时支持jpg和png图像文件。