日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

open3d使用总结

發布時間:2023/12/16 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 open3d使用总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? 基于python版的pcl庫---open3d,下面對其使用進行簡單總結:

一、安裝

pip install open3d

二、簡單使用

open3d支持如下點云文件類型

FormatDescription
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')
//保存pcdt文件

o3.io.write_point_cloud("C:\\Users\\1\\Desktop\\配準數據\\result(cpd).pcd",result)

txt

?//打開txt文件
?source = o3.io.read_point_cloud('C:\\Users\\1\\Desktop\\配準數據\\source.txt',format="xyz")
?target = o3.io.read_point_cloud('C:\\Users\\1\\Desktop\\配準數據\\target.txt',format="xyz")
?
//或者
?source = o3.geometry.PointCloud()
?m1 = np.loadtxt('C:\\Users\\1\\Desktop\\配準數據\\source.txt')[:, 0:3]
?source.points = o3.utility.Vector3dVector(m1)

//保存為txt文件
np.savetxt('C:\\Users\\1\\Desktop\\配準數據\\result(cpd).txt', result.points, fmt="%f", delimiter=" ")
“”“
data/task.txt:參數為文件路徑以及TXT文本名
self.task: 為要保存的數組名
fmt="%d": 為指定保存的文件格式,這里為十進制
delimiter=" "表示分隔符,這里以空格的形式隔開
”“”

(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使用总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。