Open3D可以讀取點(diǎn)云文件,三角網(wǎng)格文件,也可以讀取圖片。具體方法如下:
一、點(diǎn)云文件操作
????????Open3D支持的文件格式有xyz,xyzn,xyzrgb,pts,ply,pcd等文件。讀取的方式也非常簡單。data = o3d.io.read_point_cloud("文件名“)
1、讀寫文件
????????函數(shù)原型如下:
????????open3d.io.
read_point_cloud
(filename,?format='auto',?remove_nan_points=False,?remove_infinite_points=False,?print_progress=False)
參數(shù)解釋:
-
filename?(str) – 文件路徑.
-
format?(str,?optional,?default='auto') – 文件格式,如果沒有特殊的說明或設(shè)置為auto,文件的格式來自文件的擴(kuò)展名.
-
remove_nan_points?(bool,?optional,?default=False) – 如果為true,則在點(diǎn)云數(shù)據(jù)中移除NaN的點(diǎn)。
-
remove_infinite_points?(bool,?optional,?default=False) – 如果為true,則在點(diǎn)云數(shù)據(jù)中移除值為無窮的點(diǎn)。
-
print_progress?(bool,?optional,?default=False) – 如果設(shè)置為true,在加載文件時可以看到進(jìn)度條。
-
返回值:open3d.geometry.PointCloud
2、保存點(diǎn)云文件
? ? ? ? o3d.io.write_point_cloud("文件名",data),函數(shù)原型:open3d.io.
write_point_cloud
(filename,?pointcloud,?write_ascii=False,?compressed=False,?print_progress=False)
參數(shù)解釋:
-
filename?(str) – 文件路徑.
-
pointcloud?(open3d.geometry.PointCloud) –
PointCloud對象
-
write_ascii?(bool,?optional,?default=False) – 如果為true,則輸出文件為Asscii格式,否則為二進(jìn)制格式.
-
compressed?(bool,?optional,?default=False) – 如果為true,則對文件進(jìn)行壓縮.
-
print_progress?(bool,?optional,?default=False) – 如果為true,則顯示進(jìn)度條.
-
返回值:bool
3、舉例
pcd = o3d.io.read_point_cloud("bunny.ply") print(pcd) # 輸出點(diǎn)云個數(shù) o3d.io.write_point_cloud("copy_of_fragment.pcd", pcd) # 保存點(diǎn)云數(shù)據(jù) o3d.visualization.draw_geometries([pcd], width=800, height=600) # 顯示點(diǎn)云
二、讀取/保存圖片
讀取和保存圖片的函數(shù)很簡單,直接上例子。
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)
三、三角網(wǎng)格文件
????????Open3D支持讀取的網(wǎng)格文件有:ply(Polygon File Format),STL(StereoLighography),OBJ(Objects Files),OFF(Object file format),GLTF/GLB(GL Transmission Format)。
1、讀取文件
? ? ? ? 函數(shù)原型如下:
open3d.io.
read_triangle_mesh
(filename,?enable_post_processing=False,?print_progress=False)
參數(shù)解釋:
-
filename?(str) – 文件路徑.
-
enable_post_processing?(bool,?optional,?default=False) –
-
print_progress?(bool,?optional,?default=False) – 如果為true,則在控制臺可以看到進(jìn)度條。
-
返回值:open3d.geometry.TriangleMesh
2、保存文件
????????函數(shù)原型如下:
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)
參數(shù)解釋:
-
filename?(str) – 文件路徑.
-
mesh?(open3d.geometry.TriangleMesh) –
TriangleMesh對象
-
write_ascii?(bool,?optional,?default=False) – 如果為true,則用Ascii格式保存,否則用二進(jìn)制保存文件。
-
compressed?(bool,?optional,?default=False) – 如果為true,則對文件進(jìn)行壓縮.
-
write_vertex_normals?(bool,?optional,?default=True) – 如果為false,則不存儲頂點(diǎn)的法線信息.
-
write_vertex_colors?(bool,?optional,?default=True) – 如果為false,則不存儲頂點(diǎn)的顏色信息.
-
write_triangle_uvs?(bool,?optional,?default=True) – 如果為false,則不存儲任何三角形UV信息。對于OBJ格式文件,只有在設(shè)置為true時才保存mtl文件。
-
print_progress?(bool,?optional,?default=False) – 如果設(shè)置為true,則在控制臺顯示進(jìn)度條。
-
返回值: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) # 此處會打印文件的頂點(diǎn)個數(shù)和三角形的個數(shù) 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三角網(wǎng)格", width=800, height=600, left=100, top=200, mesh_show_back_face=False)
?四:總結(jié)
? ? ? ? 本結(jié)主要介紹了Open3D操作常見點(diǎn)云和三角網(wǎng)格文件的函數(shù)及其用法。Open3D還支持其他格式的文件,待下一節(jié)與大家分享。文章來源:http://www.zghlxwxcb.cn/news/detail-479332.html
????????文章來源地址http://www.zghlxwxcb.cn/news/detail-479332.html
到了這里,關(guān)于Open3D讀取文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!