赞
踩
使用python代码读取深度相机D455时,保存每一帧的深度信息,结果使用时发现除了前两帧以外,后面所有的深度图都完全一样,同样的代码分别3个场景做实验:
一、深度相机+树莓派(Ubuntu系统)
二、深度相机+树莓派(Ubuntu系统)
三、深度相机+PC机(win10系统)
上述三个场景使用同样的代码,后面两种情况都正常,只有第一种会出现这种问题。
经过调试,将相机读取的fps从30设置为15,问题消失,保存数据正常。读取基本代码如下:
- def get_image():
- # Configure depth and color streams
- pipeline = rs.pipeline()
- config = rs.config()
- # ctx = rs.context()
- # ds5_serial = '*****'
- # ds5_serial = ctx.devices[1].get_info(rs.camera_info.serial_number)
- # print('启动的摄像头序列号:{}'.format(ds5_serial))
- # config.enable_device(ds5_serial)
- config.enable_stream(rs.stream.depth, 1280, 720, rs.format.z16, 15)
- config.enable_stream(rs.stream.color, 1280, 720, rs.format.bgr8, 15)
- # Start streaming
- pipeline.start(config)
- # 获取颜色对齐
- align_to = rs.stream.color
- align = rs.align(align_to)
- save_path = './data_psk'
- if not os.path.isdir(save_path):
- os.makedirs(save_path)
- n = 0
- count = 0
- while 1:
- frames = pipeline.wait_for_frames()
- # 将图像对齐
- aligned_frames = align.process(frames)
- # 获取对齐后的深度图
- aligned_depth_frame = aligned_frames.get_depth_frame()
- color_frame = aligned_frames.get_color_frame()
- # 获取16位深度图
- depth_image = np.asanyarray(aligned_depth_frame.get_data())
- # 获取彩色图
- color_image = np.asanyarray(color_frame.get_data())
-
- if count % 10 == 0:
- # 保存rgb图
- cv2.imwrite(os.path.join(save_path, 'rgb_' + str(n).zfill(6) + '.jpg'), color_image)
- # 保存16位深度图
- np.save(os.path.join(save_path, 'rgb_' + str(n).zfill(6)), depth_image)
- print(os.path.join(save_path, 'rgb_' + str(n).zfill(6) + '.jpg'))
- n = n + 1
- if n > 1000:
- break
- count += 1
- print("done!")
可能是树莓派性能有限,造成深度计算拥堵造成的,后面还需修改读取图像大小来做对比试验,保证相机在边缘端稳定运行。 PS:fps设置过小(如设置为10),相机不能正常读取。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。