使用open3d來顯示點雲
單幀顯示1:
from open3d.open3d.geometry import pointcloud
from open3d.open3d.utility import vector3dvector
from open3d.open3d.visualization import draw_geometries
defvisualize
(pointcloud)
: point_cloud = pointcloud(
) point_cloud.points = vector3dvector(pointcloud[:,
0:3]
.reshape(-1
,3))
draw_geometries(
[point_cloud]
)
單幀顯示2:import open3d as o3d
import os
pcds = os.listdir(
"/home/user/documents/reconstruction/0715_file/0806_reconstruction/"
)# pcds = [i for i in pcds if i.split(".")[-1] == "pcd"]
pcds.sort(
)for pcd in pcds:
print
(pcd)
source = o3d.io.read_point_cloud(
"/home/user/documents/reconstruction/0715_file/0806_reconstruction/"
+ pcd)
# source 為需要配準的點雲
vis = o3d.visualization.visualizer(
) vis.create_window(
)# 將兩個點雲放入visualizer
vis.add_geometry(source)
# vis.add_geometry(target)
vis.get_render_option(
).point_size =
2# 讓visualizer渲染點雲
vis.update_geometry(
) vis.poll_events(
) vis.update_renderer(
) vis.run(
)
連續幀顯示:import os
import numpy as np
import open3d as o3d
files = os.listdir(
"0806_reconstruction/"
)vis = o3d.visualization.visualizer(
)vis.create_window(
)pointcloud = o3d.geometry.pointcloud(
)to_reset =
true
vis.add_geometry(pointcloud)
for f in files:
pcd = o3d.io.read_point_cloud(
"0806_reconstruction/"
+ f)
#此處讀取的pcd檔案,也可讀取其他格式的
pcd = np.asarray(pcd.points)
.reshape((-
1,3)
) pointcloud.points = o3d.utility.vector3dvector(pcd)
# 如果使用numpy陣列可省略上兩行
vis.update_geometry(
)if to_reset:
vis.reset_view_point(
true
) to_reset =
false
vis.poll_events(
) vis.update_renderer(
)
錯誤情況 1
在有些情況下,open3d會與torch或其他庫衝突,只需要將import open3d
放到第一行就可以了.
錯誤情況 2
如果出現open3d的錯誤,可以將open3d的版本換成0.8.0. 其他版本貌似會出現函式找不到的情況
點雲資料批量,連續3幀或5幀疊加 拼接
環境 ubuntu 如果是windows系統,讀取檔案的 可參考 linux下的findfirst 在linux作業系統下,編譯器用findfirst 而不是 findfirst linux作業系統下的查詢檔案的操作,需要包含dirent.h標頭檔案.include include include ...
使用std vector優化點雲動畫顯示一例
使用std vector應該知道幾點 1 記憶體連續的容器,有點像陣列 2 與std list相比,插入和刪除元素比較慢 因為資料遷移 3 新增元素可能會引發記憶體分配和資料遷移。anycad api pointcloudnode使用floatlist 及std vector來儲存一些列的點 x0,...
點雲資料顯示 rviz顯示點雲的參考座標系問題
獲得深度相機的點雲後,使用pcl處理 除了濾波外,還會進行座標系變換,比如從相機座標系變換到機械人的 base link 然後將pcl點雲型別轉換為ros msg的點雲型別。然後發布為話題進行顯示,具體情況就是下面這張圖 右邊影象是深度相機採集的原始點雲 kinect depth points,參考...