public void KinectFrameReceivedEvent(object sender, EventArgs e) { KinectFrameEventArgs eventArgs = (KinectFrameEventArgs)e; Parallel.For(0, eventArgs.Faces.Count, i => { if (eventArgs.Faces[i].IsTracked) { if (this.people[i] == null || this.people[i].TrackingId != eventArgs.Faces[i].TrackingId) { this.people[i] = new Person(eventArgs.Faces[i].TrackingId); } Task.Factory.StartNew(() => this.UpdateDatabase(this.people[i], eventArgs.Faces[i], Sensor.CoordinateMapper, eventArgs.FramePixels)); //if ((bool)this.settings.GetSettingValue("General", "ManualFrameCollection")) //{ // Task.Factory.StartNew(() => ManualFrameSave(eventArgs.Faces[i], Sensor.CoordinateMapper, eventArgs.FramePixels)); //} //CVFaceFrame faceFrame = new CVFaceFrame(eventArgs.Faces[i], this.Sensor.CoordinateMapper, eventArgs.FramePixels); //this.people[i].Update(faceFrame, this.recModel); } }); OnFrameReceived?.Invoke(this, eventArgs); }
public void UpdateWindow(object sender, EventArgs e) { KinectFrameEventArgs eventArgs = (KinectFrameEventArgs)e; Dispatcher.BeginInvoke((Action)(() => { if (eventArgs.FramePixels != null) { if (eventArgs.FrameType == FrameSourceTypes.Color) { UpdateBitmapColor(eventArgs.FramePixels); } else if (eventArgs.FrameType == FrameSourceTypes.Depth || eventArgs.FrameType == FrameSourceTypes.Infrared) { UpdateBitmapDepth(eventArgs.FramePixels); } } drawEngine.ClearCanvas(); drawEngine.DrawBodies(eventArgs.Bodies); drawEngine.DrawFaces(eventArgs.Faces); drawEngine.DrawInfo(eventArgs.Faces, eventArgs.Bodies); })); }