public void Paint(SensorBody body, Brush brush, Canvas canvas, SensorBodyFrame bodyFrame) { this.paintAlgorithm.Paint(body, brush, canvas); this.sensorRecorder.LogBodyFrame(bodyFrame); }
public void LogBodyFrame(SensorBodyFrame bodyFrame) { this.SensorData.BodyFrames.Add(bodyFrame); }
public void Paint(SensorBody body, System.Windows.Media.Brush brush, Canvas canvas, SensorBodyFrame bodyFrame) { this.paintingAlgorithm.Paint(body, brush, canvas); }
private void BodyReader_FrameArrived(object sender, BodyFrameArrivedEventArgs e) { using (BodyFrame frame = e.FrameReference.AcquireFrame()) { if (frame != null) { frame.GetAndRefreshBodyData(this.bodies); if (Settings.IsDebugViewEnabled) { RefreshPersonDetectionStates(); } DrawSkeletons(); if (this.primaryPerson == null) { // If we are not tracking anyone, make the first tracked person in the // frame the primary body. for (int i = 0; i < this.bodies.Count; i++) { var body = this.bodies[i]; if (body != null && body.IsTracked && PersonDetector.IsPersonPresent(body, this.bodyPresenceArea)) { this.primaryPerson = new Person(i, body.TrackingId); this.StateMachine.Fire(Trigger.PersonEnters); break; } } } else { // If we are tracking someone, check if they are still present and still in // the frame. var primaryBody = this.bodies[this.primaryPerson.BodyIndex]; if (primaryBody != null && primaryBody.TrackingId == this.primaryPerson.TrackingId && primaryBody.IsTracked) { var isPrimaryPersonPresent = PersonDetector.IsPersonPresent(primaryBody, this.bodyPresenceArea, this.primaryPerson.ExpectedMaxDistance); if (isPrimaryPersonPresent) { // Primary person is in the frame and is a valid distance from the camera. if (this.StateMachine.IsInState(State.ConfirmingPresence)) { // Calibrate the primary person's distance this.personCalibrator.AddDistanceFromCamera(primaryBody.DistanceFromSensor()); } else if (this.StateMachine.IsInState(State.Painting)) { var primaryBodyAsSensorBody = new SensorBody(primaryBody, this.sensor); var frameAsSensorFrame = new SensorBodyFrame(frame, this.sensor); this.paintingSession.Paint(primaryBodyAsSensorBody, this.currentBrush, this.canvas, frameAsSensorFrame); } } else { this.StateMachine.Fire(Trigger.PersonLeaves); } } else { this.StateMachine.Fire(Trigger.PersonLeaves); } } } } }