Инфракрасный поток от Kinect (v1) c # - PullRequest
0 голосов
/ 28 марта 2020

Это kinect для xbox 360, использующий библиотеку kinect.dll. Нет проблем с цветным потоком RgbResolution1280x960Fps12 или RgbResolution640x480Fps30. Проблема возникает с инфракрасным потоком (InfraredResolution640x480Fps30). Ниже приведен код и полученное изображение.

 using (ColorImageFrame colorFrame = e.OpenColorImageFrame())
        {
            byte[] colorData = null;

            if (colorFrame == null) return;

            if (colorData == null)
                colorData = new byte[colorFrame.PixelDataLength];

            colorFrame.CopyPixelDataTo(colorData);

            Marshal.FreeHGlobal(colorPtr);
            colorPtr = Marshal.AllocHGlobal(colorData.Length);
            Marshal.Copy(colorData, 0, colorPtr, colorData.Length);

            if (ir)  //ir is true if there is infrared stream
            {
                kinectVideoBitmap = new Bitmap(
               colorFrame.Width / 2,  //stream in 16 bit
               colorFrame.Height,
               colorFrame.Width * colorFrame.BytesPerPixel,
            System.Drawing.Imaging.PixelFormat.Format32bppRgb,  //probable error
                colorPtr);
            }
            else
            {
                kinectVideoBitmap = new Bitmap(
               colorFrame.Width,
               colorFrame.Height,
               colorFrame.Width * colorFrame.BytesPerPixel,
            System.Drawing.Imaging.PixelFormat.Format32bppRgb,
                colorPtr);
            }


            pic.Image = kinectVideoBitmap;  //pic is picturebox

            byte[] pixelData = new byte[colorFrame.PixelDataLength];
            colorFrame.CopyPixelDataTo(pixelData);

Ошибка может быть обработкой PixelFormat, указанной в коде, но я не думаю, что это зависит только от этого. Ниже приведено изображение, полученное из моего кода, и изображение, которое генерирует пример приложения "kinect explorer". (оба изображения являются скриншотами)

Это изображение примера приложения Kinect explorer, вы можете видеть, насколько хорошо оно определено по качеству и шуму, что более важно, даже отдаленные объекты хорошо видны.

Это изображение моего приложения, в дополнение к различным цветам, полученным из неправильного пиксельного формата, шум таков, что вы не можете видеть ни один из удаленных объектов.

У вас есть идеи, как исправить и получить чистое изображение? Я заранее всех благодарю.

...