Доступ к карте глубины значения пикселя - PullRequest
0 голосов
/ 19 января 2012

Я пытаюсь получить доступ к пиксельным значениям карты глубины, используя 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;

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

Ответы [ 2 ]

0 голосов
/ 03 ноября 2014

В соответствии с документацией для 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"; 
0 голосов
/ 19 января 2012

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

...