Ich spiele um mit neuen Kinect SDK v1.0.3.190. (andere verwandte Fragen in Stackoverflow sind auf vorherigen Sdk von Kinect) Ich bekomme Tiefen- und Farbströme von Kinect. Da die Tiefen- und RGB-Ströme mit unterschiedlichen Sensoren erfasst werden, besteht eine Fehlausrichtung zwischen zwei Bildern, wie unten zu sehen ist.Kinect Tiefe und Bildrahmen Ausrichtung
Nur RGB
Nur Tiefe
Tiefe & RGB
ich brauche, um sie auszurichten und es gibt eine Funktion namens MapDepthToColorImagePoint genau für diesen Zweck. Es scheint jedoch nicht zu funktionieren. hier ist eine gleich blended (Tiefe und kartiert Farbe) führen, unter der mit dem folgenden Code
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]));
});
erstellt wird
wo
depthFrameData -> raw depth data (short array)
videoBitmapData -> raw image data (byte array)
mappedBitmapData -> expected result data (byte array)
Reihenfolge der Parameter, die Auflösung, Arraygrößen richtig sind (doppelt geprüft) .
Das Ergebnis des Codes ist:
Die Verlagerung geht weiter! Noch schlimmer ist, dass das Ergebnisbild nach der Verwendung von MapDepthToColorImagePoint genau dem Originalbild entspricht.
Ich würde mich freuen, wenn jemand mir helfen könnte, meinen Fehler zu finden oder mir zumindest erklären zu können, was MapDepthToColorImagePoint ist (vorausgesetzt, dass ich seine Funktionalität missverstanden habe)?