自分用
順次更新
点群データの初期化
import open3d as o3d
pcd = o3d.geometry.PointCloud()
可視化
クラスにしておくと便利
class VISUALIZE():
pc = o3d.geometry.PointCloud()
def __init__(self, pc):
# ウィンドウの作成
self.vis = o3d.visualization.Visualizer()
self.vis.create_window()
self.vis.clear_geometries()
# 座標軸の作成と描画
coordinate_frame = o3d.geometry.TriangleMesh.create_coordinate_frame(size=500, origin=[0, 0, 0])
self.vis.add_geometry(coordinate_frame)
# 点群の登録
self.pc = pc
self.vis.add_geometry(self.pc)
# 点群の大きさ
render_option = self.vis.get_render_option()
render_option.point_size = 10.0
def update(self, pc):
# 点群の更新
self.pc = pc
self.vis.update_geometry(self.pc)
# 描画の更新
self.vis.poll_events()
self.vis.update_renderer()
def destroy(self):
self.vis.destroy_window()
VIS = VISUALIZE(pcd)
for i in 何らかのループ
何らかの処理
VIS.update(pcd)
VIS.destroy()
Numpyへ変換
import numpy as np
pdc_np = np.asarray(pcd.points)
jsonにして記録
txt = '{'
for i in 何らかのループ
何らかの処理
formatted_pts3d = ','.join([f"[{p[0]:.1f},{p[1]:.1f},{p[2]:.1f}]" for p in pdc_np])
txt = txt + '"pcd":[' + formatted_pts3d + '],'