Retrieving Channels from Kinect device using python OpenCV
我用python编写了一些简单的代码,以从OpenNI设备获取不同的通道。我在启用所有PrimeSense和OpenNI支持的情况下自行构建了OpenCV。 OpenNI示例适用于Kinect传感器和PrimeSense传感器,以及用于测试OpenNI支持(./cpp-example-openni_capture)的OpenCV示例。
这是我放在一起的代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | import cv2 import cv2.cv as cv capture = cv2.VideoCapture(cv.CV_CAP_OPENNI) capture.set(cv.CV_CAP_OPENNI_IMAGE_GENERATOR_OUTPUT_MODE, cv.CV_CAP_OPENNI_VGA_30HZ) print capture.get(cv.CV_CAP_PROP_OPENNI_REGISTRATION) while True: if not capture.grab(): print"Unable to Grab Frames from camera" break okay1, depth_map = capture.retrieve(cv.CV_CAP_OPENNI_DEPTH_MAP) if not okay1: print"Unable to Retrieve Disparity Map from camera" break okay2, gray_image = capture.retrieve(cv.CV_CAP_OPENNI_GRAY_IMAGE) if not okay2: print"Unable to retrieve Gray Image from device" break cv2.imshow("depth camera", depth_map) cv2.imshow("rgb camera", gray_image) if cv2.waitKey(10) == 27: break cv2.destroyAllWindows() capture.release() |
因此一切运行正常,但是显示的结果不是正确的通道...例如,如果我要访问灰色图像通道和深度图通道,则显示的两个图像都是depth_maps。
是的,我尝试访问其他频道并更改OPENNI_IMAGE_GENERATOR_MODE。不幸的是,结果一直保持一致。无论我尝试什么,我总是会得到相同的深度通道。 depth_map-gray_image产生全黑图像。
就像我说过的,C OpenCV OpenNI示例对于Kinect传感器和primesense传感器都非常适用。 Python模块似乎有问题,或者我做的事情确实很愚蠢。
编辑:在Ubuntu 12.04 LTS上运行
感谢您的帮助。
提请
检索如下所示(http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html#videocapture-retrieve):
Python:cv2.VideoCapture.retrieve([image [,channel]])a?’retval,image
因此,您需要传递两个值来进行检索。
我不确定应该显示什么图像,但是发送占位符似乎可以解决问题。
okay1,depth_map = capture.retrieve(0,cv.CV_CAP_OPENNI_DEPTH_MAP)
okay2,gray_image = capture.retrieve(0,cv.CV_CAP_OPENNI_GRAY_IMAGE)