访问像素值深度图

时间:2012-01-19 17:05:00

标签: c++ visual-studio-2010 opencv kinect

我试图访问深度图的像素值,使用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 :(得分:0)

由于你没有指定错误,我会试一试:问题似乎是你试图访问来自另一个Mat的元素:你的那个create名为depth,但cout调用中引用的名称为depthshow

答案 1 :(得分:0)

根据CAP_OPENNI_DEPTH_MAP的{​​{3}},您的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";