我正在使用Lucas Kanade算法跟踪人体的运动。我正在研究Kinect的RGB和深度流。我必须在身体上放置一些点,并跟踪这些点。最后他们的xyz坐标必须计算。
我的问题是,如何从深度流中获取特定像素的z坐标?我知道kinect的深度原始深度值在0-2047范围内。在它上面应用公式可以得到我想要的任何单位的距离。但是如何获得这个原始深度?有人可以帮忙吗?
我正在为kinect和opencv使用libfreenect驱动程序。
答案 0 :(得分:3)
使用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