open3d 多个点云和坐标轴的可视化(坐标轴画在点云中心)

1.实验目的

可视化两个点云,判断点云之间的相对距离,所以在点云的中心用坐标轴表示,比较直观

2.代码

import open3d as o3d
import numpy as np
npz_dir = "demo_data/"
src_cloud_file = npz_dir + "init_149.pcd"
tgt_cloud_file = npz_dir + "reg_305.pcd"

FOR1 = o3d.geometry.TriangleMesh.create_coordinate_frame(size=15, origin=[0, 0, 0])
# 估计的
FOR2 = o3d.geometry.TriangleMesh.create_coordinate_frame(
    size=15, origin=[-0.85524881, -0.17872652, -9.14765595])
transformation = np.loadtxt('match_305.txt')

# gt
# FOR2 = o3d.geometry.TriangleMesh.create_coordinate_frame(
#     size=15, origin=[-(171.824-171.292), -(0.124252-0.168724), -(78.0105-68.9384)])
# transformation = np.array([[1, 0, 0, (171.292-171.824)],
#                            [0, 1, 0, (0.168724-0.124252)],
#                            [0, 0, 1, (68.9384-78.0105)],
#                            [0, 0, 0, 1]])

src_pcd = o3d.io.read_point_cloud(src_cloud_file)
tgt_pcd = o3d.io.read_point_cloud(tgt_cloud_file)

src_pcd.paint_uniform_color([1, 0.706, 0])  # 黄色
tgt_pcd.paint_uniform_color([0, 0.651, 0.929])  # 蓝色

src_pcd.transform(transformation)

# o3d.visualization.draw_geometries([tgt_pcd, src_pcd])
# o3d.visualization.draw_geometries([FOR1, tgt_pcd])
# o3d.visualization.draw_geometries([FOR2, src_pcd])
o3d.visualization.draw_geometries([FOR1, tgt_pcd, FOR2, src_pcd])

3.效果展示

在这里插入图片描述

  • 7
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在Open3D读取点云并显示坐标轴,可以按照以下步骤进行操作: ```python import open3d as o3d # 读取点云数据 point_cloud = o3d.io.read_point_cloud("path_to_point_cloud_file.pcd") # 创建场景和渲染器 scene = o3d.visualization.VisualizerWithEditing() scene.create_window() # 将点云添加到场景 scene.add_geometry(point_cloud) # 添加坐标轴 scene.add_geometry(o3d.geometry.TriangleMesh.create_coordinate_frame(size=1.0)) # 设置相机视角 view_control = scene.get_view_control() view_control.set_front([-1, 0, 0]) # 设置相机前方向为负X轴方向 view_control.set_up([0, -1, 0]) # 设置相机向上方向为负Y轴方向 # 渲染场景并显示 scene.run() scene.destroy_window() ``` 在上述代码,首先使用 `o3d.io.read_point_cloud` 函数读取点云数据文件,并将其存储在 `point_cloud` 变量。 然后,创建一个 `VisualizerWithEditing` 对象作为场景和渲染器。注意,使用 `VisualizerWithEditing` 可以使得后续可以对点云进行交互操作(例如选择、删除等)。 接下来,将点云数据添加到场景,使用 `scene.add_geometry(point_cloud)`。 然后,使用 `o3d.geometry.TriangleMesh.create_coordinate_frame` 创建坐标轴的三维模型,并将其添加到场景,使用 `scene.add_geometry`。 设置相机视角,例如设置相机前方向为负X轴方向,使用 `view_control.set_front([-1, 0, 0])`;设置相机向上方向为负Y轴方向,使用 `view_control.set_up([0, -1, 0])`。 最后,使用 `scene.run()` 渲染场景并显示。 通过以上代码,你可以在Open3D读取点云数据,并显示带有坐标轴的场景。你可以通过鼠标和键盘进行交互操作,并对点云进行可视化分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值