2011-08-15 2 views
2

J'ai OpenCV et libfreenect configurés sur mon ubuntu 11.04 et fonctionne séparément. J'ai également une certaine expérience avec OpenCV mais le problème est que je ne sais pas comment combiner Kinect et OpenCV. J'espérais que quelqu'un puisse m'aider en me montrant une bonne documentation ou en fournissant un simple exemple de code d'utilisation de kinect dans opencv.OpenCV avec les doutes de Begineer

Répondre

3

Le premier lien sur google pour "OpenCV kinect" était this. J'espère que ça aide.

+0

Depuis que je devais aller le dur, j'ai décidé de contribuer – dyinginpain

+1

chec sur thecodejammer.wordpress.com – dyinginpain

2

Pour que les choses fonctionnent rapidement, je recommanderais d'inclure des bibliothèques opencv dans l'un des exemples openni (par exemple NiUserTracker). Là, vous pouvez acquérir l'image de profondeur de l'objet DepthMetaData de la manière suivante.

//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

Pour obtenir le code de travail MrglMrgl, j'ai dû ajouter ce qui suit au début:

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

Et cela, au final:

cv::namedWindow("Example1", CV_WINDOW_AUTOSIZE); 
cv::imshow("Example1", ImgBuf2); 
cv::waitKey(0);