У меня есть OpenCV и libfreenect, настроенные на моей Ubuntu 11.04, и они работают отдельно. У меня также есть некоторый опыт работы с OpenCV, но проблема в том, что я не знаю, как объединить kinect и OpenCV. Я надеялся, что кто-нибудь любезно поможет мне, указав на хорошую документацию или предоставив простой пример кода использования kinect в opencv.
OpenCV с сомнениями новичка в kinect
Ответы (3)
Первая ссылка в Google для «OpenCV kinect» была этой. Я надеюсь, что это помогает.
person
WebMonster
schedule
15.08.2011
Поскольку мне пришлось пройти трудный путь, я решил внести свой вклад
- 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