capture_depth_point_cloud()
是open3d.visualization.VisualizerWithVertexSelection
类的一个方法,用于从深度图像中捕获点云。
vis.capture_depth_point_cloud(depth_scale=1000.0, depth_trunc=1000.0)
depth_scale
(可选):用于将深度图像值转换为单位为 m 的距离值的比例因子。默认值为1000.0。depth_trunc
(可选):用于将深度图像值截断为最大深度范围内的值的截断距离。默认值为1000.0。该方法没有返回值。捕获的点云数据将存储在open3d.visualization.VisualizerWithVertexSelection
类的depth_point_cloud
属性中。
import open3d as o3d
depth = o3d.io.read_image("depth.png")
intrinsics = o3d.camera.PinholeCameraIntrinsic(640, 480, 525, 525, 319.5, 239.5)
vis = o3d.visualization.VisualizerWithVertexSelection()
vis.create_window()
vis.add_geometry(o3d.geometry.Image(depth))
vis.get_render_option().point_size = 1
vis.reset_view_point(True)
vis.run()
vis.capture_depth_point_cloud(intrinsics.intrinsic_matrix, depth)
depth_pcd = vis.get_selected_points().pcd
o3d.visualization.draw_geometries([depth_pcd])
上述代码从depth.png
图像中读取深度图像,并使用深度图像创建了o3d.geometry.Image
对象。随后,创建了一个基于VisualizerWithVertexSelection
类的可视化窗口,并将深度图像添加为可视化窗口的一部分。
在运行可视化窗口后,用户可以选择在窗口中选择某个点来捕获其深度信息。capture_depth_point_cloud
方法以intrinsics和depth参数捕获选中的点云数据,并将其存储在depth_point_cloud
属性中。最后,使用o3d.visualization.draw_geometries
函数将所捕获的点云数据可视化。
open3d.visualization.VisualizerWithVertexSelection
类中获取捕获的点云数据。capture_depth_point_cloud
方法必须在可视化窗口中选择某个点后调用。调用该方法后,将无法再次选择其他点。