Я пытаюсь отобразить карту глубины на цветовое пространство, используя функцию координатыMapper из sdk. Однако результат, который я получил, не является тем, что я ожидал, он, по-видимому, имеет меньшие пропорции, и изображение, похоже, зеркально отражается.Отображение глубины цвета Kinect v2 с использованием C#
Ниже приведен код, который я использовал:
depthWidth = depthFrameDescription.Width;
depthHeight = depthFrameDescription.Height;
var colorDesc = colorFrame.FrameDescription;
int colorWidth = colorDesc.Width;
int colorHeight = colorDesc.Height;
int size = colorWidth * colorHeight;
DepthSpacePoint[] colSpacePoints = new DepthSpacePoint[colorWidth * colorHeight];
using (KinectBuffer depthFrameData = depthFrame.LockImageBuffer())
using (KinectBuffer colorBuffer = colorFrame.LockRawImageBuffer())
{
this.bitmap.Lock();
if ((colorWidth == this.bitmap.PixelWidth) && (colorHeight == this.bitmap.PixelHeight))
{
byte[] colorFrameData = new byte[size * bytesPerPixel];
// Map the values here
ushort [] frameData = new ushort[depthWidth * depthHeight];
depthFrame.CopyFrameDataToArray(frameData);
coordinateMapper.MapColorFrameToDepthSpace(frameData, colSpacePoints);
this.bitmap.WritePixels(new Int32Rect(0, 0, colorWidth, colorHeight), colSpacePoints, colorWidth * bytesPerPixel, 0);
this.bitmap.AddDirtyRect(new Int32Rect(0, 0, this.bitmap.PixelWidth, this.bitmap.PixelHeight));
}
this.bitmap.Unlock();
}
this.bitmapBackBufferSize = (uint)![enter image description here][1]((this.bitmap.BackBufferStride * (this.bitmap.PixelHeight - 1)) + (this.bitmap.PixelWidth * this.bytesPerPixel));
isBitmapLocked = true;