コード例 #1
0
        /// <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;
        }
コード例 #2
0
        /*
         * /// <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.
            }
        }
コード例 #3
0
 /// <summary>
 /// Disables the skeleton tracking
 /// </summary>
 /// <param name="OldSensor"></param>
 private void DisableSkel(KinectSensor OldSensor)
 {
     OldSensor.SkeletonFrameReady -= skelObj.SensorSkeletonFrameReady;
     OldSensor.SkeletonStream.Disable();
     skelObj = null;
 }