3

我使用 RGB+深度视频生成了多个点云,并希望将多个点云可视化为视频或动画。

目前我正在使用Python,我的部分代码如下:

for i in range(1,10)
       pcd = Track.create_pcd(i)
       o3d.visualization.draw_geometries([pcd])
       pcd_list.append(pcd)

当我使用 draw_geometries 或 draw_geometries_with_animation_callback 时,它们似乎无法显示点云列表:

o3d.visualization.draw_geometries([pcd_list])

或者

def rotate_view(vis):
    ctr = vis.get_view_control()
    ctr.rotate(10.0, 0.0)
    return False
    
o3d.visualization.draw_geometries_with_animation_callback([pcd_list],rotate_view)

它给出了以下错误:

类型错误:draw_geometries():不兼容的函数参数。支持以下参数类型:

  1. (geometry_list: List[open3d.open3d_pybind.geometry.Geometry], window_name: str = 'Open3D', width: int = 1920, height: int = 1080, left: int = 50, top: int = 50, point_show_normal: bool =假,mesh_show_wireframe: bool = False,mesh_show_back_face: bool = False) -> 无

是否有任何示例如何将点云列表导出到视频中,例如设置查看器,并使用 0.5 秒的等待键显示每个点云,然后保存为视频文件(.mp4/.avi)?并且还要获取然后设置视频中点云的固定视点?

非常感谢!

4

1 回答 1

3

您可以使用 Open3D非阻塞可视化

会是这样

vis = o3d.visualization.Visualizer()
vis.create_window()

# geometry is the point cloud used in your animaiton
geometry = o3d.geometry.PointCloud()
vis.add_geometry(geometry)

for i in range(icp_iteration):
    # now modify the points of your geometry
    # you can use whatever method suits you best, this is just an example
    geometry.points = pcd_list[i].points
    vis.update_geometry(geometry)
    vis.poll_events()
    vis.update_renderer()
于 2020-07-21T00:53:57.510 回答