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); } } }
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 } }); } }
public void LogFrame(ColourFrame frame) { /*Thread t = new Thread(new ParameterizedThreadStart(this._LogColourFrame)) * { * Name = "ColourFrameWriter" * }; * t.Start(frame);*/ }