#python #image-processing #3d-reconstruction #open3d
#python #обработка изображений #3d-реконструкция #open3d
Вопрос:
КОНТЕКСТ
Я пытаюсь визуализировать облако точек 3d из карты несоответствий. Он отлично работает с одной картой.
ПРОБЛЕМА
Я хочу обновить то, что находится в окне. Когда я вызываю метод run(), открывается новый поток, и я ничего не могу сделать, пока окно не будет закрыто. Я хотел бы очистить то, что находится в окне, и отобразить новое облако, не закрывая окно, чтобы это было что-то вроде анимации.
код
Я создал объект Visualizer и делаю все для этого.
vis = open3d.visualization.Visualizer()
vis.create_window()
cloud = open3d.io.read_point_cloud(out_fn) # out_fn is file name
vis.add_geometry(cloud)
vis.run()
Ответ №1:
Класс open3d.visualization.Визуализатор имеет функции .update_geometry() и .remove_geometry(), которые вы можете использовать для достижения этой цели. Другой способ, который вы можете попробовать, — это использовать open3d.visualization.Класс VisualizerWithKeyCallback.
vis = o3d.visualization.VisualizerWithKeyCallback()
cloud = open3d.io.read_point_cloud(out_fn)
vis.create_window()
vis.register_key_callback(key, your_update_function)
vis.add_geometry(cloud)
vis.run()
def your_update_function():
#Your update routine
vis.update_geometry(cloud)
vis.update_renderer()
vis.poll_events()
vis.run()