2012-01-19 2 views
0

im пытается получить доступ к значению пикселя карты глубины, используя kinect, openni и opencv. им с помощью этого кодаДоступ к картине глубины значения пикселя

Mat depth; 
VideoCapture capture1(CV_CAP_OPENNI); 
capture1.grab(); 
capture1.retrieve(depth,CV_CAP_OPENNI_DEPTH_MAP); 
imshow("depth",depth); 

waitKey(0); 
cout << depth.at<unsigned>(20,20); 
system("PAUSE"); 

программы показать мне карту глубины, но когда я пытался Гости могут воспользоваться значениями, приводит к ошибке. но если у положить:

cout << depth; 

затем покажите мне все значения.

+0

Какая версия OpenCV это? – Jacob

ответ

0

С вы не указали ошибку, я дам ему выстрелили: проблема, кажется, что вы пытаетесь получить доступ к элементам из другого Mat: тот, который вы создаете, названный depth, однако один ссылка на вызов cout называется depthshow.

0

Согласно documentation для CAP_OPENNI_DEPTH_MAP, ваш Mat должен иметь 16 бит без знака целочисленных данных на пиксель, а не 32-бит unsigned int вы пытаетесь использовать. Таким образом, используйте следующие вместо:

// uint16_t available in C++11 
cout << depth.at<uint16_t>(20,20) << " millimetres"; 

или

// not 100% sure that all compilers produce 16 bits fields 
cout << depth.at<unsigned short int>(20,20) << " millimetres"; 
Смежные вопросы