0

我正在做一个项目,该项目需要我提取 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)

4

0 回答 0