Intel RealSense - 在两个 numpy 数组中对齐深度和颜色

Intel RealSense - Align depth and color in two numpy arrays

我正在使用英特尔实感 L515。我想在两个不同的 numpy 数组中对齐深度和彩色图像,以便它们的分辨率相同。

这是我的代码

import pyrealsense2 as rs
import numpy as np


pc = rs.pointcloud()


pipe = rs.pipeline()
config = rs.config()

config.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 30)
config.enable_stream(rs.stream.color, 960, 540, rs.format.bgr8, 30)

pipe.start(config)

try:

    frames = pipe.wait_for_frames()

    depth = frames.get_depth_frame()
    color = frames.get_color_frame()

    # These are the two different frames to align
    depth_image = np.asanyarray(depth.get_data())
    color_image = np.asanyarray(color.get_data())

    # The new color image
    # color_image_with_same_resolution = ?

finally:
    pipe.stop()

彩色图像的分辨率高于深度图像。调整彩色图像大小的最有效方法是什么,以使其具有与深度图像相同的尺寸,并且每个彩色像素都映射到正确的对应深度像素。在这种情况下,速度和效率至关重要。

基本上我希望能够保存两个单独的数组,可以在另一个程序中使用。数组必须具有相同的维度,如下所示:(Z - Array 640x480x1) 和 (RGB -Array 640x480x3)

检查这个 librealsense 示例:

https://github.com/IntelRealSense/librealsense/blob/master/wrappers/python/examples/align-depth2color.py

它使用 pyrealsense2.align() 允许执行深度帧与其他帧的对齐。

解决方法很简单。使用 pyrealsense2 库时也非常快!

import pyrealsense2 as rs

pipeline = None
colorizer = rs.colorizer()
align = rs.align(rs.stream.depth)

pipeline = rs.pipeline()
config = rs.config()
config.enable_stream(rs.stream.depth, 640, 480, rs.format.z16,30) config.enable_stream(rs.stream.color, 960, 540, rs.format.rgb8, 30)
profile = pipeline.start(config)

frameset = pipeline.wait_for_frames()
frameset = align.process(frameset)
aligned_color_frame = frameset.get_color_frame()
color_frame = np.asanyarray(aligned_color_frame.get_data())
depth = np.asanyarray(frameset.get_depth_frame().get_data())