open3d使用总结
? ? 基于python版的pcl庫---open3d,下面對其使用進行簡單總結:
一、安裝
pip install open3d二、簡單使用
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]的float數據 |
| pts | 第一行是點數. 接下來的行遵循如下其中一種格式:[x,?y,?z,?i,?r,?g,?b],?[x,?y,?z,?r,?g,?b],?[x,?y,?z,?i]?or?[x,?y,?z], 其中x,?y,?z,?i?是?double類型?,r,?g,?b?是?uint8類型 |
| ply | 見?多邊形格式, ply文件可以包含點云和mesh網格數據 |
| pcd | 見?點云數據 //可直接打開pcd,ply文件 source = o3.io.read_point_cloud('bunny.pcd') o3.io.write_point_cloud("C:\\Users\\1\\Desktop\\配準數據\\result(cpd).pcd",result) |
| txt | ?//打開txt文件 //保存為txt文件 |
(1)點云讀取
read_point_cloud(filename, format='auto', remove_nan_points=True, remove_infinite_points=True, print_progress=False):?參數:
filename (str): 點云文件路徑
format (str, optional, default='auto'): 輸入文件格式filehe的路徑。 如果未指定或設置為“auto”,則從文件擴展名推斷格式?
remove_nan_points (bool, optional, default=False): 如果True,所有包含NaN的點都將從PointCloud中刪除。?
remove_infinite_points (bool, optional, default=False): 如果為True,所有包含無限值的點都將從PointCloud中刪除?
print_progress (bool, optional, default=False): 如果設置為true,控制臺中會顯示一個進度條?
返回:
open3d.geometry.PointCloud
默認情況下,Open3D嘗試通過文件名擴展名推斷文件類型,默認讀取的是xyz維度信息。
pcd = o3d.io.read_point_cloud("../../test_data/my_points.txt", format='xyz')
也可以顯式地指定文件類型。 在這種情況下,文件擴展名將被忽略。
(2)點云寫入
write_point_cloud(filename, pointcloud, write_ascii=False, compressed=False, print_progress=False)參數:
? ?filename (str): 點云文件保存路徑名.
? ?pointcloud (open3d.geometry.PointCloud): 目標點云
? ? compressed (bool, optional, default=False): 設置為' ' True ' '以壓縮格式寫入。?
? ? print_progress (bool, optional, default=False):如果設置為true,控制臺中會顯示一個進度條?
返回:bool類型
保存一個點云(o3d.pcd)到本地文件
(3)點云顯示
draw_geometries(window_name='Open3D', width=1920, height=1080, left=50, top=50, point_show_normal=False, mesh_show_wireframe=False, mesh_show_back_face, *args, **kwargs):參數:
geometry_list (List[open3d.geometry.Geometry]): 可視化點云列表。
window_name (str, optional, default='Open3D'): 可視化窗口名稱。
width (int, optional, default=1920): 可視化窗口寬
height (int, optional, default=1080): 可視化窗口高
left (int, optional, default=50): 可視化窗口左邊距
top (int, optional, default=50): 可視化窗口上邊距
point_show_normal (bool, optional, default=False): ?如果設置為True,可視化點的法向量。
mesh_show_wireframe (bool, optional, default=False): 如果設置為true,可視化網格線框。
mesh_show_back_face (bool, optional, default=False): 可視化網格三角形背面。
返回:
None
還有一些特殊場景可能需要自定義可視化,具體可以參考tutorial:Customized visualization — Open3D 0.15.1 documentation
?(4)示例
import open3d as o3d import numpy as npprint("Load a ply point cloud, print it, and render it") # ply_point_cloud = o3d.data.PLYPointCloud() plyname = r'fragment.ply' #讀點云 pcd = o3d.io.read_point_cloud(plyname) print(pcd) print(np.asarray(pcd.points)) #點云顯示 o3d.visualization.draw_geometries([pcd],zoom=0.3412,front=[0.4257, -0.2125, -0.8795],lookat=[2.6172, 2.0475, 1.532],up=[-0.0694, -0.9768, 0.2024]) #保存點云 o3d.io.write_point_cloud("save.pcd", pcd)參考鏈接:
1、Basic — Open3D 0.9.0 documentation
2、open3d-點云讀寫和顯示_月亮299的博客-CSDN博客
3、??????爆肝5萬字??Open3D 點云數據處理基礎(Python版)_孫 悟 空的博客-CSDN博客_open3d教程
總結
以上是生活随笔為你收集整理的open3d使用总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Siebel系统中配置LDAP认证
- 下一篇: siebel编程