我正在开展一个项目,要求我提取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)