2

我在我的 ubuntu 11.04 上配置了 OpenCV 和 libfreenect 并单独工作。我对 OpenCV 也有一些经验,但问题是我不知道如何将 kinect 和 OpenCV 结合起来。我希望有人能通过指出一个好的文档或提供一个使用 kinect 的简单示例代码来帮助我开放式简历。

4

3 回答 3

3

谷歌上“OpenCV kinect”的第一个链接是这个。我希望它有所帮助。

于 2011-08-15T15:19:30.173 回答
2

为了快速让工作正常进行,我建议将 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);
于 2011-12-30T11:28:52.403 回答
1

为了得到工作 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);
于 2012-10-06T23:24:21.057 回答