Convierte Kinect ColorImageFrame a Bitmap

Estoy usando Kinect (Microsoft SDK) con XNA. Quiero usar GRATF para reconocimiento de marcadores

¿Cómo convertir los datos de un Kinect ColorImageFrame a System.Drawing.Bitmap o AForge.Imaging.UnmanagedImage que puedo procesarlos con 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); ... } 

Puedes encontrar la respuesta en este artículo .
Para resumirlo, este método debería ser el truco:

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