capture_screen_float_buffer
是Open3D中open3d.visualization.VisualizerWithVertexSelection
类的一个方法,用于捕获当前可视化窗口的图像并转换为浮点类型的颜色缓冲区(float buffer)。
def capture_screen_float_buffer(self, do_render=True, do_render_pointcloud=True) -> numpy.ndarray:
do_render
(可选):是否在捕获之前重新渲染场景,默认为True
。do_render_pointcloud
(可选):是否重新渲染点云(如果存在),默认为True
。返回一个numpy.ndarray
,表示一个M×N×4的浮点类型颜色缓冲区,其中M和N分别为窗口的高度和宽度,4个通道分别代表红、绿、蓝和alpha各颜色分量的浮点值,取值范围为0-1。
import open3d as o3d
import numpy as np
# 创建点云
pcd = o3d.geometry.PointCloud()
pcd.points = o3d.utility.Vector3dVector(np.random.randn(100, 3))
# 创建可视化窗口并添加点云
vis = o3d.visualization.VisualizerWithVertexSelection()
vis.create_window()
vis.add_geometry(pcd)
# 捕获屏幕图像
float_buffer = vis.capture_screen_float_buffer()
# 将图片保存为PNG文件
image = (float_buffer[:, :, :3] * 255).astype(np.uint8)
o3d.io.write_image("screenshot.png", image)
# 关闭窗口
vis.destroy_window()
do_render
和do_render_pointcloud
均设为False
。.astype()
)将其转换为所需类型的数组。