使用pylibfreenect2从kinect v2中提取同步RGB和深度图像

时间:2017-11-15 03:12:34

标签: python computer-vision kinect-v2

我正在开展一个项目,要求我提取rgb图像和相应的深度图。由于RGB图像和深度图是从不同的传感器获得的,因此它们不会同步。

目前我正在尝试修改pylibfreenect2官方文档中提供的example

    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)

0 个答案:

没有答案