/// <summary> /// Starts the skeleton reading process and sends the colour image to be used for skeleton mapping /// </summary> private void InitiateSkel(KinectSensor newSensor) { //Create SkeltonLib Obj with active sensor skelObj = new SkeletonLib(newSensor); skelObj.SkeletonStart(); skelObj.setColourImage(this.streamImg); //Tie image source to output of object this.Image.Source = skelObj.getOutputImage(); // Add an event handler to be called whenever there is new skeleton frame data newSensor.SkeletonFrameReady += skelObj.SensorSkeletonFrameReady; }
/* * /// <summary> * /// Called when the KinectSensorChooser gets a new sensor * /// </summary> * /// <param name="sender">sender of the event</param> * /// <param name="args">event arguments</param> * private void SensorChooserOnKinectChanged(object sender, KinectChangedEventArgs args) * { * if (args.OldSensor != null) * { * try * { * DisableColour(args.OldSensor); * DisableSkel(args.OldSensor); * //DisableBackgroundRemoval(args.OldSensor); * } * catch (InvalidOperationException) * { * // KinectSensor might enter an invalid state while enabling/disabling streams or stream features. * // E.g.: sensor might be abruptly unplugged. * } * } * * if (args.NewSensor != null) * { * try * { * this.InitiateColour(args.NewSensor); * this.InitiateSkel(args.NewSensor); * //this.InitiateBackgroundRemoval(args.NewSensor); * } * catch (InvalidOperationException ex) * { * measureBarText.Text = ex.HelpLink; * // KinectSensor might enter an invalid state while enabling/disabling streams or stream features. * // E.g.: sensor might be abruptly unplugged. * } * } * } */ /// <summary> /// Event handler for Kinect sensor's DepthFrameReady event /// </summary> /// <param name="sender">object sending the event</param> /// <param name="e">event arguments</param> private void SensorAllFramesReady(object sender, AllFramesReadyEventArgs e) { // in the middle of shutting down, or lingering events from previous sensor, do nothing here. if (null == this.sensorChooser || null == this.sensorChooser.Kinect || this.sensorChooser.Kinect != sender) { return; } try { using (var depthFrame = e.OpenDepthImageFrame()) { if (null != depthFrame) { this.backgroundRemovedColorStream.ProcessDepth(depthFrame.GetRawPixelData(), depthFrame.Timestamp); } } using (var colorFrame = e.OpenColorImageFrame()) { if (null != colorFrame) { this.backgroundRemovedColorStream.ProcessColor(colorFrame.GetRawPixelData(), colorFrame.Timestamp); } } using (var skeletonFrame = e.OpenSkeletonFrame()) { if (null != skeletonFrame) { skeletonFrame.CopySkeletonDataTo(this.skeletons); this.backgroundRemovedColorStream.ProcessSkeleton(this.skeletons, skeletonFrame.Timestamp); skelObj = new SkeletonLib(skeletonFrame); } } this.ChooseSkeleton(); } catch (InvalidOperationException) { // Ignore the exception. } }
/// <summary> /// Disables the skeleton tracking /// </summary> /// <param name="OldSensor"></param> private void DisableSkel(KinectSensor OldSensor) { OldSensor.SkeletonFrameReady -= skelObj.SensorSkeletonFrameReady; OldSensor.SkeletonStream.Disable(); skelObj = null; }