2011-11-29 124 views
2

我正在使用Lucas Kanade算法跟踪人体的运动。我正在研究Kinect的RGB和Depth流。我必须在身体上放置一些点,并跟踪这些点。最后他们的xyz坐标必须被计算。如何从Kinect深度流中获取原始深度值?

我的问题是,如何从深度流中获取特定像素的z坐标?我知道深度的kinect深度值在0-2047范围内。并且在其上应用公式可以使我得到任何我想要的单位的距离。但如何获得这个原始深度?谁能帮忙?

我正在使用libfreenect driver for kinect和opencv。

回答

2

使用OpenCV 2.3.x,您可以检索所需的所有信息。您需要使用OpenNI从源代码编译才能正常工作。看看这个代码:

VideoCapture capture(CV_CAP_OPENNI); 
for(;;) 
{ 
    Mat depthMap; 
    Mat rgbImage 

    capture.grab(); 

    capture.retrieve(depthMap, OPENNI_DEPTH_MAP); 



    if(waitKey(30) >= 0) 
     break; 
} 

是的,它很容易。 depthMap将在每个索引中存储一个深度。该深度表示用IR测量深度时从传感器到表面的距离。更多细节请见:http://opencv.itseez.com/doc/user_guide/ug_highgui.html

+0

伊恩,这是非常好的信息!一直在寻找它几个小时。 – Jacksonkr