【问题标题】:Adding new points to point cloud in real time - Open3D实时向点云添加新点 - Open3D
【发布时间】:2021-01-18 12:47:39
【问题描述】:

我正在使用 Open3D 在 Python 中可视化点云。本质上,我想做的是以编程方式向点云添加另一个点,然后实时渲染。

这是我目前所拥有的。我找不到任何解决方案。

在下面的代码中,我展示了一种可能的解决方案,但它并不有效。一旦第一个窗口关闭,就会添加点并打开一个新窗口。这不是我想要的。我希望它动态显示新点,而无需再次关闭和打开。以及创建一个新变量的事实,我认为在处理越来越大的数据集时可能会出现问题

import open3d as o3d
import numpy as np

#Create two random points
randomPoints = np.random.rand(2, 3)

pointSet = o3d.geometry.PointCloud()

pointSet.points = o3d.utility.Vector3dVector(randomPoints)

#Visualize the two random points
o3d.visualization.draw_geometries([pointSet])

#Here I want to add more points to the pointSet
#This solution does not work effective

#Create another random set
p1 = np.random.rand(3, 3)

p2 = np.concatenate((pointSet.points, p1), axis=0)

pointSet2 = o3d.geometry.PointCloud()

pointSet2.points = o3d.utility.Vector3dVector(p2)

o3d.visualization.draw_geometries([pointSet2])

有没有办法解决这个问题?

如果没有,我可以查看哪些其他库能够实时呈现新的传入点。

【问题讨论】:

    标签: python numpy open3d


    【解决方案1】:

    在下面的页面中,它解释了如何在不关闭窗口的情况下更新可视化工具。 http://www.open3d.org/docs/release/tutorial/visualization/non_blocking_visualization.html 代码可能如下所示:

    //设置一个新的空pcd

    // 初始化可视化工具

    // for 循环:

    //add new points into pcd
    
    //visualizer update as sample code
    

    //完成

    【讨论】:

    • 感谢您的反馈。我已经尝试过这种方法。可视化器打开,但没有渲染其他点。除了创建的初始点。可视化器似乎也很滞后。开始认为 o3d 不适合此类任务
    • @PaulBrink 你做了什么来解决这个问题?我需要做类似的事情。我看到 draw_geometries_with_animation_callback 可能有用,但如果您发现更好的使用方法,我可能想知道您的解决方案。
    • @EdwardNedHarvey 这是不久前的事了。我最终找到了适用于 Open3D 的东西,但帧速率和延迟极低……所以我最终放弃了 O3D 和 python。归根结底,我刚刚创建了自己的可视化工具。不过还有其他不错的选择。 PCL 很好,功能丰富。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-07
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    • 1970-01-01
    相关资源
    最近更新 更多