深度相机D455保存左右图像至不同文件夹内:
import pyrealsense2 as rs
import numpy as np
import cv2
import os
def save_ir_images(ir1_frame, ir2_frame, index):
ir1_image = np.asanyarray(ir1_frame.get_data())
ir2_image = np.asanyarray(ir2_frame.get_data())
# 创建输出文件夹
output_dir_left = ‘output/left’
output_dir_right = ‘output/right’
if not os.path.exists(output_dir_left):
os.makedirs(output_dir_left)
if not os.path.exists(output_dir_right):
os.makedirs(output_dir_right)
ir1_filename = os.path.join(output_dir_left, f’ir1_image_{index}.png’)
ir2_filename = os.path.join(output_dir_right, f’ir2_image_{index}.png’)
cv2.imwrite(ir1_filename, ir1_image)
cv2.imwrite(ir2_filename, ir2_image)
print(f"Saved {ir1_filename} and {ir2_filename}")
def main():
# 创建RealSense管道
pipeline = rs.pipeline()
# 创建配置对象
config = rs.config()
# 配置管道以启用红外流
config.enable_stream(rs.stream.infrared, 1, 1280, 720, rs.format.y8, 30)
config.enable_stream(rs.stream.infrared, 2, 1280, 720, rs.format.y8, 30)
# 开始流
profile = pipeline.start(config)
# 关闭结构光
sensor = profile.get_device().first_depth_sensor()
sensor.set_option(rs.option.emitter_enabled, 0)
try:
index = 0
while True:
# 等待一组帧
frames = pipeline.wait_for_frames()
# 获取红外帧
ir1_frame = frames.get_infrared_frame(1)
ir2_frame = frames.get_infrared_frame(2)
# 检查帧是否完整
if not ir1_frame or not ir2_frame:
continue
# 显示图像
ir1_image = np.asanyarray(ir1_frame.get_data())
ir2_image = np.asanyarray(ir2_frame.get_data())
cv2.imshow(‘Left IR Image’, ir1_image)
cv2.imshow(‘Right IR Image’, ir2_image)
# 保存图像
save_ir_images(ir1_frame, ir2_frame, index)
index += 1
# 按键退出
if cv2.waitKey(1) & 0xFF == ord(‘q’):
break
finally:
# 停止管道
pipeline.stop()
cv2.destroyAllWindows()
if name == “main”:
main()