連續幀點雲動畫顯示

2021-10-24 11:43:38 字數 2258 閱讀 4971

使用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,參考...