我正在玩新的Kinect SDK v1.0.3.190。 (stackoverflow中的其他相关问题在kinect之前的sdk上) 我从Kinect获得深度和颜色流。由于深度和RGB流通过不同的传感器捕捉,所以两个帧之间会有一个错位,如下所示。Kinect深度和图像帧对齐
只有RGB
只有深度
深度& RGB
我需要对准他们,有一个名为MapDepthToColorImagePoint正是为了这个目的功能。但它似乎并不奏效。这里是一个同样混合(深度和映射颜色)导致下面,其与下面的代码
Parallel.For(0, this.depthFrameData.Length, i =>
{
int depthVal = this.depthFrameData[i] >> 3;
ColorImagePoint point = this.kinectSensor.MapDepthToColorImagePoint(DepthImageFormat.Resolution640x480Fps30, i/640, i % 640, (short)depthVal, ColorImageFormat.RgbResolution640x480Fps30);
int baseIndex = Math.Max(0, Math.Min(this.videoBitmapData.Length - 4, (point.Y * 640 + point.X) * 4));
this.mappedBitmapData[baseIndex] = (byte)((this.videoBitmapData[baseIndex]));
this.mappedBitmapData[baseIndex + 1] = (byte)((this.videoBitmapData[baseIndex + 1]));
this.mappedBitmapData[baseIndex + 2] = (byte)((this.videoBitmapData[baseIndex + 2]));
});
其中
depthFrameData -> raw depth data (short array)
videoBitmapData -> raw image data (byte array)
mappedBitmapData -> expected result data (byte array)
顺序的参数,分辨率,阵列尺寸是正确的创建(双重检查) 。
代码的结果是:
失准继续!更糟糕的是,使用MapDepthToColorImagePoint后的结果图像与原始图像完全相同。
,将不胜感激,如果有人可以帮助我找到了我的错误,或者至少给我解释一下什么是(假设我误解了它的功能)MapDepthToColorImagePoint?