Я хочу получить глубину и 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)
получить изображение глубины с некоторыми изменениями в функции обработчика, но не смог заставить его работать.