У меня есть потоковые данные kinect в cv::Mat
. Я пытаюсь запустить пример кода, использующего OpenNI.Преобразование cv :: Mat to openni :: VideoFrameRef
Можно ли каким-либо образом преобразовать свой Mat в формат OpenNI?
Мне просто нужно изображение глубины, и после долгого сражения с OpenNI, отказавшись от его установки.
Я использую OpenCV 3, Visual Studio 2013, Kinect v2 для Windows.
Соответствующий код:
void CDifodoCamera::loadFrame()
{
//Read the newest frame
openni::VideoFrameRef framed; //I assume I need to replace this with my Mat...
depth_ch.readFrame(&framed);
const int height = framed.getHeight();
const int width = framed.getWidth();
//Store the depth values
const openni::DepthPixel* pDepthRow = (const openni::DepthPixel*)framed.getData();
int rowSize = framed.getStrideInBytes()/sizeof(openni::DepthPixel);
for (int yc = height-1; yc >= 0; --yc)
{
const openni::DepthPixel* pDepth = pDepthRow;
for (int xc = width-1; xc >= 0; --xc, ++pDepth)
{
if (*pDepth < 4500.f)
depth_wf(yc,xc) = 0.001f*(*pDepth);
else
depth_wf(yc,xc) = 0.f;
}
pDepthRow += rowSize;
}
}
Зачем вам нужно открыть? Я имею в виду, что этот примерный код можно переписать для работы непосредственно с opencv-изображением и без openni .... – api55
Еще лучше! Я просто не был уверен, как получить Мат. Как я могу переписать его, чтобы сделать эту работу? Спасибо за ваше время. – anti