如何从Kinect v2 RGB坐标获得z坐标(距离)?

时间:2017-01-13 13:13:42

标签: computer-vision kinect openkinect kinect-v2 libfreenect2

我正在尝试将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和来自rgb帧的centerY:

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

使用此代码,输出始终是错误的。大部分时间都是“inf”或“-inf”值。当我在已注册的帧上执行跟踪算法时,输出(距离)是正确的,虽然我不能使用已注册的帧,因为我需要分析RGB帧。

我也尝试将getPointXYZ()中的“undistorted”更改为“depth2rgb”,但没有成功:(

有没有办法让RGB值超出已注册的帧?

0 个答案:

没有答案