Open3D可以读取点云文件,三角网格文件,也可以读取图片。具体方法如下:
一、点云文件操作
Open3D支持的文件格式有xyz,xyzn,xyzrgb,pts,ply,pcd等文件。读取的方式也非常简单。data = o3d.io.read_point_cloud("文件名“)
1、读写文件
函数原型如下:
open3d.io.
read_point_cloud
(filename, format='auto', remove_nan_points=False, remove_infinite_points=False, print_progress=False)
参数解释:
-
filename (str) – 文件路径.
-
format (str, optional, default='auto') – 文件格式,如果没有特殊的说明或设置为auto,文件的格式来自文件的扩展名.
-
remove_nan_points (bool, optional, default=False) – 如果为true,则在点云数据中移除NaN的点。
-
remove_infinite_points (bool, optional, default=False) – 如果为true,则在点云数据中移除值为无穷的点。
-
print_progress (bool, optional, default=False) – 如果设置为true,在加载文件时可以看到进度条。
-
返回值:open3d.geometry.PointCloud
2、保存点云文件
o3d.io.write_point_cloud("文件名",data),函数原型:open3d.io.
write_point_cloud
(filename, pointcloud, write_ascii=False, compressed=False, print_progress=False)
参数解释:
-
filename (str) – 文件路径.
-
pointcloud (open3d.geometry.PointCloud) –
PointCloud对象
-
write_ascii (bool, optional, default=False) – 如果为true,则输出文件为Asscii格式,否则为二进制格式.
-
compressed (bool, optional, default=False) – 如果为true,则对文件进行压缩.
-
print_progress (bool, optional, default=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) # 显示点云
二、读取/保存图片
读取和保存图片的函数很简单,直接上例子。
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
(filename, enable_post_processing=False, print_progress=False)
参数解释:
-
filename (str) – 文件路径.
-
enable_post_processing (bool, optional, default=False) –
-
print_progress (bool, optional, default=False) – 如果为true,则在控制台可以看到进度条。
-
返回值:open3d.geometry.TriangleMesh
2、保存文件
函数原型如下:
open3d.io.
write_triangle_mesh
(filename, mesh, write_ascii=False, compressed=False, write_vertex_normals=True, write_vertex_colors=True, write_triangle_uvs=True, print_progress=False)
参数解释:
-
filename (str) – 文件路径.
-
mesh (open3d.geometry.TriangleMesh) –
TriangleMesh对象
-
write_ascii (bool, optional, default=False) – 如果为true,则用Ascii格式保存,否则用二进制保存文件。
-
compressed (bool, optional, default=False) – 如果为true,则对文件进行压缩.
-
write_vertex_normals (bool, optional, default=True) – 如果为false,则不存储顶点的法线信息.
-
write_vertex_colors (bool, optional, default=True) – 如果为false,则不存储顶点的颜色信息.
-
write_triangle_uvs (bool, optional, default=True) – 如果为false,则不存储任何三角形UV信息。对于OBJ格式文件,只有在设置为true时才保存mtl文件。
-
print_progress (bool, optional, default=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操作常见点云和三角网格文件的函数及其用法。Open3D还支持其他格式的文件,待下一节与大家分享。文章来源:https://www.toymoban.com/news/detail-479332.html
文章来源地址https://www.toymoban.com/news/detail-479332.html
到了这里,关于Open3D读取文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!