Convert Kinect ColorImageFrame to Bitmap

.net, aforge, c#, kinect, xna

Solution

You can find the answer in this article. To summarize it, this method should do the trick:

Bitmap ImageToBitmap(ColorImageFrame img)
{
     byte[] pixeldata = new byte[img.PixelDataLength];
     img.CopyPixelDataTo(pixeldata);
     Bitmap bmap = new Bitmap(img.Width, img.Height, PixelFormat.Format32bppRgb);
     BitmapData bmapdata = bmap.LockBits(
         new Rectangle(0, 0, img.Width, img.Height),
         ImageLockMode.WriteOnly, 
         bmap.PixelFormat);
     IntPtr ptr = bmapdata.Scan0;
     Marshal.Copy(pixeldata, 0, ptr, img.PixelDataLength);
     bmap.UnlockBits(bmapdata);
     return bmap;
 }

Problem

I´m using Kinect (Microsoft SDK) with XNA. I want to use GRATF for marker-recognition How to convert the data of a Kinect `ColorImageFrame` to a `System.Drawing.Bitmap` or `AForge.Imaging.UnmanagedImage` that I can process them with GRATF? ``` void kinectSensor_ColorFrameReady(object sender, ColorImageFrameReadyEventArgs e) { Bitmap bitmap = null; ColorImageFrame frame = e.OpenColorImageFrame(); byte[] buffer = new byte[frame.PixelDataLength]; frame.CopyPixelData(buffer); // how to convert the data in buffer to a bitmap? var glyphs = recognizer.FindGlyphs(bitmap); ... } ```

Original source