Exemplo n.º 1
0
        private void _LogColourFrame(object data)
        {
            lock (this._ColourFrameLock)
            {
                ColourFrame frame = (ColourFrame)data;

                WriteableBitmap bitmap = new WriteableBitmap(640, 480, 96.0, 96.0, System.Windows.Media.PixelFormats.Bgr32, null);
                bitmap.WritePixels(new Int32Rect(0, 0, 640, 480), frame.Data, 640 * sizeof(int), 0);

                PngBitmapEncoder encoder = new PngBitmapEncoder();
                encoder.Frames.Add(BitmapFrame.Create(bitmap));

                string path = Path.Combine(new string[] { this.Location, "ColourFrames", DateTime.Now.ToString("ffffff") + ".png" });

                try
                {
                    using (FileStream fs = new FileStream(path, FileMode.Create))
                    {
                        encoder.Save(fs);
                    }
                }
                catch (IOException)
                {
                    ;
                }
                finally
                {
                    Monitor.Pulse(this._ColourFrameLock);
                }
            }
        }
Exemplo n.º 2
0
        private void _HandleColourFrameReady(object sender, Microsoft.Kinect.ColorImageFrameReadyEventArgs args)
        {
            byte[] frame;

            // Get the Kinect colour frame
            using (Microsoft.Kinect.ColorImageFrame kinect_frame = args.OpenColorImageFrame())
            {
                if (kinect_frame == null)
                {
                    return;
                }

                frame = new byte[this._kinect.ColorStream.FramePixelDataLength];
                kinect_frame.CopyPixelDataTo(frame);
            }

            // Convert to Rhapsody frame
            ColourFrame rhapsody_frame = new ColourFrame {
                Format = ColorImageFormat.Rgb_640x480_30fps,
                Data   = frame
            };

            // Call all listeners
            foreach (Delegate d in this.ColourFrameReady.GetInvocationList())
            {
                d.DynamicInvoke(new object[] { sender, new ColourFrameReadyEventArgs {
                                                   Frame = rhapsody_frame
                                               } });
            }
        }
Exemplo n.º 3
0
 public void LogFrame(ColourFrame frame)
 {
     /*Thread t = new Thread(new ParameterizedThreadStart(this._LogColourFrame))
      * {
      *  Name = "ColourFrameWriter"
      * };
      * t.Start(frame);*/
 }