为什么无法显示第二个点云?

问题描述 投票:0回答:1

使用open3d无法通过o3d.visualization.VisualizerWithEditing()显示第二个点云。

python 版本 = 3.8.19

open3d==0.18.0

numpy==1.24.4

WLS = 2.0

这是我的测试文件:

import open3d as o3d
import numpy as np

# create point cloud
pcd1 = o3d.geometry.PointCloud()
pcd1.points = o3d.utility.Vector3dVector(np.random.random((100, 3)))
pcd1.paint_uniform_color([1, 0, 0])

pcd2 = o3d.geometry.PointCloud()
pcd2.points = o3d.utility.Vector3dVector(np.random.random((100, 3)))
pcd2.paint_uniform_color([0, 1, 0])

# create window
vis = o3d.visualization.VisualizerWithEditing()
vis.create_window()

# add point cloud data
vis.add_geometry(pcd1, reset_bounding_box=True)
vis.add_geometry(pcd2, reset_bounding_box=False)

ctr = vis.get_view_control()
ctr.set_zoom(0.8)
ctr.rotate(10.0, 0.0)

vis.run()
vis.destroy_window()

picked_points = vis.get_picked_points()

目前结果: 在此输入图片描述

我希望能够在一个窗口中同时显示两个点云,并且能够用鼠标选择点并打印坐标,但是添加第一个几何图形后,第二个无法显示。

期望的结果: 在此输入图片描述

如果open3d实际上无法做到这一点,请告诉我如何处理这个问题,其他一些图形框架可以解决它。非常感谢。

point-clouds open3d
1个回答
0
投票

您可以简单地将两个点云添加在一起;第二个将在第一个的坐标系中绘制,但坐标将保持不变。

只需替换:

vis.add_geometry(pcd1, reset_bounding_box=True)
vis.add_geometry(pcd2, reset_bounding_box=False)

vis.add_geometry(pcd1+pcd2, reset_bounding_box=True)

输出(选择部分点): enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.