使用python OpenCV从Kinect设备检索频道



我在python中编写了一些简单的代码,从OpenNI设备中获取不同的通道。我自己构建了OpenCV,并启用了所有PrimeSense和OpenNI支持。OpenNI样本适用于Kinect传感器和PrimeSense传感器,以及用于测试OpenNI支持的OpenCV样本(./cpp-extample-openi_capture)。

这是我整理的代码。

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 上运行

谢谢你的帮助。Drew

检索如下(http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html#videocapture-检索):

Python:cv2.VideoCapture.reveive([image[,channel]])→retval,图像

因此,您需要传递两个值来检索。

我不确定应该是什么图像,但发送一个占位符似乎就可以了


okay1,depth_map=捕获检索(0,cv.cv_CAP_OPENNI_depth_map)
okay2,gray_image=捕获。检索(0,cv_CAP_OPENNI_gray_image)

相关内容

  • 没有找到相关文章

最新更新