Как получить координату 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, ®istered, 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 из зарегистрированных кадров?