【发布时间】:2012-10-07 07:24:21
【问题描述】:
我在我的 ubuntu 11.04 上配置了 OpenCV 和 libfreenect 并单独工作。 我对 OpenCV 也有一些经验,但问题是我不知道如何将 kinect 和 OpenCV 结合起来。我希望有人能通过指出一个好的文档或提供一个使用 kinect 的简单示例代码来帮助我opencv。
【问题讨论】:
标签: image-processing opencv kinect openni
我在我的 ubuntu 11.04 上配置了 OpenCV 和 libfreenect 并单独工作。 我对 OpenCV 也有一些经验,但问题是我不知道如何将 kinect 和 OpenCV 结合起来。我希望有人能通过指出一个好的文档或提供一个使用 kinect 的简单示例代码来帮助我opencv。
【问题讨论】:
标签: image-processing opencv kinect openni
谷歌上“OpenCV kinect”的第一个链接是this。希望对你有帮助。
【讨论】:
为了快速让工作正常进行,我建议将 opencv 库包含到其中一个 openni 示例(例如 NiUserTracker)中。在那里,您可以通过以下方式从 DepthMetaData 对象获取深度图像。
//obtain depth image
DepthMetaData depthMD;
g_DepthGenerator.GetMetaData(depthMD);
const XnDepthPixel* g_Depth = depthMD.Data();
cv::Mat DepthBuf(480,640,CV_16UC1,(unsigned char*)g_Depth);
//To display the depth image you probably would want to normalize it to 0-255 range first
//obtain rgb image
ImageMetaData ImageMD;
g_ImageGenerator.GetMetaData(ImageMD);
const XnUInt8* g_Img =ImageMD.Data();
cv::Mat ImgBuf(480,640,CV_8UC3,(unsigned short*)g_Img);
cv::Mat ImgBuf2;
cv::cvtColor(ImgBuf,ImgBuf2,CV_RGB2BGR);
【讨论】:
为了得到工作 MrglMrgl 代码,我必须在开头添加以下内容:
nRetVal = g_Context.FindExistingNode(XN_NODE_TYPE_IMAGE, g_ImageGenerator);
if (nRetVal != XN_STATUS_OK)
{
printf("No image node exists! Check your XML.");
return 1;
}
最后是这样的:
cv::namedWindow( "Example1", CV_WINDOW_AUTOSIZE );
cv::imshow( "Example1", ImgBuf2 );
cv::waitKey(0);
【讨论】: