Как получить координату z (расстояние) из RGB-координаты Kinect v2?

Я пытаюсь преобразовать libfreenect RGB-координаты в DEPTH-координаты, чтобы найти координату z (расстояние до объекта). Я перепробовал так много вещей, но я не смог сделать правильные решения. Есть идеи?

Я использую rgbmat для того, чтобы применить фильтр Калмана. Таким образом, у меня есть только координаты центра RGB объекта:

libfreenect2::Frame undistorted(512, 424, 4), registered(512, 424, 4), depth2rgb(1920, 1080 + 2, 4);
libfreenect2::Frame *rgb = frames[libfreenect2::Frame::Color];
Mat(rgb->height, rgb->width, CV_8UC4, rgb->data).copyTo(rgbmat);
registration->apply(rgb, depth, &undistorted, &registered, true, &depth2rgb);

Нахождение координат xyz из неискаженного кадра с вводом centerX и centerY из кадра rgb:

float centerX, centerY, centerZ;
registration->getPointXYZ(&undistorted, center.y, center.x, centerX, centerY, centerZ); 

С этим кодом вывод всегда неправильный. В большинстве случаев значения "inf" или "-inf". Когда я выполняю свой алгоритм отслеживания для зарегистрированных кадров, вывод (расстояние) является правильным, хотя я не могу использовать зарегистрированные кадры, потому что мне нужно анализировать кадры RGB.

Я также попытался изменить "неискаженный" в getPointXYZ() на "deep2rgb", но безуспешно:(

Есть ли способ получить значения RGB из зарегистрированных кадров?

0 ответов

Другие вопросы по тегам