open3d使用总结
? ? 基于python版的pcl庫(kù)---open3d,下面對(duì)其使用進(jìn)行簡(jiǎn)單總結(jié):
一、安裝
pip install open3d二、簡(jiǎn)單使用
open3d支持如下點(diǎn)云文件類型
| Format | Description |
| xyz | 每行包含[x,?y,?z], 其中?x,?y,?z?分別是三維坐標(biāo) |
| xyzn | 每行包含[x,?y,?z,?nx,?ny,?nz], 其中?nx,?ny,?nz?是法向量 |
| xyzrgb | 每行包含?[x,?y,?z,?r,?g,?b], 其中r,?g,?b?是[0,?1]的float數(shù)據(jù) |
| pts | 第一行是點(diǎn)數(shù). 接下來(lái)的行遵循如下其中一種格式:[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文件可以包含點(diǎn)云和mesh網(wǎng)格數(shù)據(jù) |
| pcd | 見?點(diǎn)云數(shù)據(jù) //可直接打開pcd,ply文件 source = o3.io.read_point_cloud('bunny.pcd') o3.io.write_point_cloud("C:\\Users\\1\\Desktop\\配準(zhǔn)數(shù)據(jù)\\result(cpd).pcd",result) |
| txt | ?//打開txt文件 //保存為txt文件 |
(1)點(diǎn)云讀取
read_point_cloud(filename, format='auto', remove_nan_points=True, remove_infinite_points=True, print_progress=False):?參數(shù):
filename (str): 點(diǎn)云文件路徑
format (str, optional, default='auto'): 輸入文件格式filehe的路徑。 如果未指定或設(shè)置為“auto”,則從文件擴(kuò)展名推斷格式?
remove_nan_points (bool, optional, default=False): 如果True,所有包含NaN的點(diǎn)都將從PointCloud中刪除。?
remove_infinite_points (bool, optional, default=False): 如果為True,所有包含無(wú)限值的點(diǎn)都將從PointCloud中刪除?
print_progress (bool, optional, default=False): 如果設(shè)置為true,控制臺(tái)中會(huì)顯示一個(gè)進(jìn)度條?
返回:
open3d.geometry.PointCloud
默認(rèn)情況下,Open3D嘗試通過(guò)文件名擴(kuò)展名推斷文件類型,默認(rèn)讀取的是xyz維度信息。
pcd = o3d.io.read_point_cloud("../../test_data/my_points.txt", format='xyz')
也可以顯式地指定文件類型。 在這種情況下,文件擴(kuò)展名將被忽略。
(2)點(diǎn)云寫入
write_point_cloud(filename, pointcloud, write_ascii=False, compressed=False, print_progress=False)參數(shù):
? ?filename (str): 點(diǎn)云文件保存路徑名.
? ?pointcloud (open3d.geometry.PointCloud): 目標(biāo)點(diǎn)云
? ? compressed (bool, optional, default=False): 設(shè)置為' ' True ' '以壓縮格式寫入。?
? ? print_progress (bool, optional, default=False):如果設(shè)置為true,控制臺(tái)中會(huì)顯示一個(gè)進(jìn)度條?
返回:bool類型
保存一個(gè)點(diǎn)云(o3d.pcd)到本地文件
(3)點(diǎn)云顯示
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):參數(shù):
geometry_list (List[open3d.geometry.Geometry]): 可視化點(diǎn)云列表。
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): ?如果設(shè)置為True,可視化點(diǎn)的法向量。
mesh_show_wireframe (bool, optional, default=False): 如果設(shè)置為true,可視化網(wǎng)格線框。
mesh_show_back_face (bool, optional, default=False): 可視化網(wǎng)格三角形背面。
返回:
None
還有一些特殊場(chǎng)景可能需要自定義可視化,具體可以參考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' #讀點(diǎn)云 pcd = o3d.io.read_point_cloud(plyname) print(pcd) print(np.asarray(pcd.points)) #點(diǎn)云顯示 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]) #保存點(diǎn)云 o3d.io.write_point_cloud("save.pcd", pcd)參考鏈接:
1、Basic — Open3D 0.9.0 documentation
2、open3d-點(diǎn)云讀寫和顯示_月亮299的博客-CSDN博客
3、??????爆肝5萬(wàn)字??Open3D 點(diǎn)云數(shù)據(jù)處理基礎(chǔ)(Python版)_孫 悟 空的博客-CSDN博客_open3d教程
總結(jié)
以上是生活随笔為你收集整理的open3d使用总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Siebel系统中配置LDAP认证
- 下一篇: **matlab subs函数**