Просто получите rgb и глубину потока изображений с pykinect и python3 - PullRequest
0 голосов
/ 31 марта 2019

Я хочу получить глубину и RGB видео поток от Kinect (версия 1). Я использую Python 3 версию Pykinect , а не CPython.

Я нашел несколько примеров, но документация Pykinect почти не существует, и я не хочу использовать pygame.

На linux с freenect я сделал:

rgb_stream = freenect.sync_get_video()[0]
rgb_stream = rgb_stream[:, :, ::-1]
rgb_image = cv.cvtColor(rgb_stream, cv.COLOR_BGR2RGB)

depth_stream = freenect.sync_get_depth()[0]
depth_stream = np.uint8(depth_stream)
depth_image = cv.cvtColor(depth_stream, cv.COLOR_GRAY2RGB)

Однако я использую pykinect в Windows, и я хочу получить глубину и поток rgb аналогичным образом, а затем обработать его с помощью OpenCV и отобразить его с помощью Qt.

Вот пример кода, который я нашел:

from pykinect import nui
import numpy
import cv2

def video_handler_function(frame):
    video = numpy.empty((480,640,4),numpy.uint8)
    frame.image.copy_bits(video.ctypes.data)
    cv2.imshow('KINECT Video Stream', video)

kinect = nui.Runtime()
kinect.video_frame_ready += video_handler_function
kinect.video_stream.open(nui.ImageStreamType.Video, 2,nui.ImageResolution.Resolution640x480,nui.ImageType.Color)

cv2.namedWindow('KINECT Video Stream', cv2.WINDOW_AUTOSIZE)

while True:

    key = cv2.waitKey(1)
    if key == 27: break

kinect.close()
cv2.destroyAllWindows()

Что такое video_handler_function? Какова цель kinect.video_frame_ready += video_handler_function?

Я пытался kinect.depth_stream.open(nui.ImageStreamType.Depth, 2, nui.ImageResolution.Resolution320x240, nui.ImageType.Depth) получить изображение глубины с некоторыми изменениями в функции обработчика, но не смог заставить его работать.

...