OpenCV с сомнениями новичка в kinect

У меня есть OpenCV и libfreenect, настроенные на моей Ubuntu 11.04, и они работают отдельно. У меня также есть некоторый опыт работы с OpenCV, но проблема в том, что я не знаю, как объединить kinect и OpenCV. Я надеялся, что кто-нибудь любезно поможет мне, указав на хорошую документацию или предоставив простой пример кода использования kinect в opencv.


person dyinginpain    schedule 15.08.2011    source источник


Ответы (3)


Первая ссылка в Google для «OpenCV kinect» была этой. Я надеюсь, что это помогает.

person WebMonster    schedule 15.08.2011
comment
Поскольку мне пришлось пройти трудный путь, я решил внести свой вклад - person dyinginpain; 19.08.2011

Чтобы быстро все заработало, я бы рекомендовал включить библиотеки 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);
person MrglMrgl    schedule 30.12.2011

Чтобы заставить работать код 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);
person Vito Valov    schedule 06.10.2012