我正在玩新的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?