2011-08-15 39 views
2

我在我的Ubuntu 11.04上配置了OpenCV和libfreenect,并单独工作。 我也有一些OpenCV的经验,但问题是我不知道如何结合kinect和OpenCV.I希望如果有人会通过指向一个很好的文档或提供一个简单的示例代码使用kinect帮助我在opencv。OpenCV与kinect begineer的疑惑

回答

3

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

+0

因为我不得不去的艰难的方式,我决定贡献 – dyinginpain

+1

chk out thecodejammer.wordpress.com – dyinginpain

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); 
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);