我正在做一个项目,该项目需要我提取 rgb 图像和相应的深度图。由于 RGB 图像和深度图是从不同的传感器获得的,因此它们不会同步。
目前我正在尝试修改pylibfreenect2 官方文档中给出的示例。
while True:
frames = listener.waitForNewFrame()
if enable_rgb:
color = frames["color"]
if i%skip_frame ==0 :
np.save('/home/ashu/DDP/Kinect/RGB_images/rgb_{}'.format(j),color.asarray())
if enable_depth:
ir = frames["ir"]
depth = frames["depth"]
if enable_rgb and enable_depth:
registration.apply(color, depth, undistorted, registered)
elif enable_depth:
registration.undistortDepth(depth, undistorted)
if enable_depth:
cv2.imshow("ir", ir.asarray() / 65535.)
cv2.imshow("depth", depth.asarray() / 4500.)
cv2.imshow("undistorted", undistorted.asarray(np.float32) / 4500.)
if i%skip_frame == 0 :
np.save('/home/ashu/DDP/Kinect/Depth_images/depth_{}'.format(j),depth.asarray())
if enable_rgb:
cv2.imshow("color", cv2.resize(color.asarray(),(int(1920 / 3), int(1080 / 3))))
if enable_rgb and enable_depth:
cv2.imshow("registered", registered.asarray(np.uint8))
xx = registration.getPointXYZ(undistorted, registered , )
if i%skip_frame == 0 :
np.save('/home/ashu/DDP/Kinect/registered/reg_{}'.format(j) ,registered.asarray(np.uint8))
j += 1
listener.release(frames)
i+=1
key = cv2.waitKey(delay=1)
if key == ord('q'):
break
device.stop()
device.close()
sys.exit(0)
从代码中可以看出,我试图在一些固定数量的帧之后将 rgb 图像和深度图保存为 .npy 文件,但由于两者的尺寸不同,所以它们没有用。很短我的目标是提取相同尺寸的 rgb 和深度图像 (424,512)