/// <summary>
        /// Handles gesture detection results arriving from the sensor for the associated body tracking Id
        /// </summary>
        /// <param name="sender">object sending the event</param>
        /// <param name="e">event arguments</param>
        private void Reader_GestureFrameArrived(object sender, VisualGestureBuilderFrameArrivedEventArgs e)
        {
            VisualGestureBuilderFrameReference frameReference = e.FrameReference;

            using (VisualGestureBuilderFrame frame = frameReference.AcquireFrame())
            {
                if (frame != null)
                {
                    // get the discrete gesture results which arrived with the latest frame
                    IReadOnlyDictionary <Gesture, DiscreteGestureResult> discreteResults = frame.DiscreteGestureResults;

                    if (discreteResults != null)
                    {
                        // we only have one gesture in this source object, but you can get multiple gestures
                        foreach (Gesture gesture in this.vgbFrameSource.Gestures)
                        {
                            if (gesture.Name.Equals(this.seatedGestureName) && gesture.GestureType == GestureType.Discrete)
                            {
                                DiscreteGestureResult result = null;
                                discreteResults.TryGetValue(gesture, out result);

                                if (result != null)
                                {
                                    // update the GestureResultView object with new gesture result values
                                    this.GestureResultView.UpdateGestureResult(true, result.Detected, result.Confidence);

                                    //Update DB
                                }
                            }
                        }
                    }
                }
            }
        }
    void _gestureFrameReader_FrameArrived(object sender, VisualGestureBuilderFrameArrivedEventArgs e)
    {
        VisualGestureBuilderFrameReference frameReference = e.FrameReference;

        using (VisualGestureBuilderFrame frame = frameReference.AcquireFrame())
        {
            if (frame != null && frame.DiscreteGestureResults != null)
            {
                DiscreteGestureResult result = null;

                if (frame.DiscreteGestureResults.Count > 0)
                {
                    foreach (Gesture gesture in trackedGestures)
                    {
                        result = frame.DiscreteGestureResults[gesture];

                        if (result != null)
                        {
                            if (result.Detected == true)
                            {
                                //if(result.Confidence > 0.60f)
                                {
                                    Debug.Log("Detected: " + gesture.Name);
                                    //Debug.Log("result confidence: " +result.Confidence);
                                }
                            }
                        }
                    }
                }
            }
        }
    }
Example #3
0
        // Handles gesture detection results arriving from the sensor for the associated body tracking Id
        private void Reader_GestureFrameArrived(object sender, VisualGestureBuilderFrameArrivedEventArgs e)
        {
            VisualGestureBuilderFrameReference frameReference = e.FrameReference;

            using (VisualGestureBuilderFrame frame = frameReference.AcquireFrame()) {
                if (frame != null)
                {
                    // get the discrete gesture results which arrived with the latest frame
                    IReadOnlyDictionary <Gesture, DiscreteGestureResult> discreteResults = frame.DiscreteGestureResults;

                    if (discreteResults != null)
                    {
                        // we only have one gesture in this source object, but you can get multiple gestures
                        foreach (Gesture gesture in this.vgbFrameSource.Gestures)
                        {
                            if (gesture.Name.Equals(this.gestureName) && gesture.GestureType == GestureType.Discrete)
                            {
                                DiscreteGestureResult result = null;
                                discreteResults.TryGetValue(gesture, out result);

                                if (result != null)
                                {
                                    /**********************************************************************************************/
                                    //Cuando el gesto es reconocido reproduce el sonido
                                    this.ReproducirSonido(result.Detected, result.Confidence);
                                    /**********************************************************************************************/
                                }
                            }
                        }
                    }
                }
            }
        }
Example #4
0
        public IList <GestureResult> PollMostRecentGestureFrame()
        {
            IList <GestureResult> result = new List <GestureResult>();

            using (VisualGestureBuilderFrame frame = _gestureReader.CalculateAndAcquireLatestFrame())
            {
                if (frame == null)
                {
                    return(result);
                }

                IReadOnlyDictionary <Gesture, DiscreteGestureResult> discreteResults
                    = frame.DiscreteGestureResults;

                if (discreteResults == null)
                {
                    return(result);
                }

                foreach (Gesture gesture in _gestureSource.Gestures.Where(
                             gesture => discreteResults.ContainsKey(gesture)))
                {
                    DiscreteGestureResult discreteGesture = discreteResults[gesture];

                    result.Add(new GestureResult(
                                   gesture.Name,
                                   discreteGesture.Confidence,
                                   discreteGesture.Detected));
                }
            }

            return(result);
        }
Example #5
0
        private void Reader_GestureFrameArrived(object sender, VisualGestureBuilderFrameArrivedEventArgs e)
        {
            VisualGestureBuilderFrameReference frameReference = e.FrameReference;

            using (VisualGestureBuilderFrame frame = frameReference.AcquireFrame())
            {
                if (frame != null)
                {
                    //Get the gesture results from the last frame
                    IReadOnlyDictionary <Gesture, DiscreteGestureResult> discreteResults = frame.DiscreteGestureResults;

                    if (discreteResults != null)
                    {
                        foreach (Gesture gesture in this.vgbFrameSource.Gestures)
                        {
                            if (gesture.Name.Equals(this.waveGestureName) && gesture.GestureType == GestureType.Discrete)
                            {
                                DiscreteGestureResult result = null;
                                discreteResults.TryGetValue(gesture, out result);

                                if (result != null)
                                {
                                    this.GestureResultView.UpdateGestureResult(true, result.Detected, result.Confidence);
                                }
                            }
                        }
                    }
                }
            }
        }
/// Handles gesture detection results arriving from the sensor for the associated body tracking Id
    private void GestureFrameArrived(object sender, VisualGestureBuilderFrameArrivedEventArgs e)
    {
        VisualGestureBuilderFrameReference frameReference = e.FrameReference;

        using (VisualGestureBuilderFrame frame = frameReference.AcquireFrame()) {
            if (frame != null)
            {
                // get the discrete gesture results which arrived with the latest frame
                IDictionary <Gesture, DiscreteGestureResult> discreteResults = frame.DiscreteGestureResults;
                if (discreteResults != null)
                {
                    foreach (Gesture gesture in _Source.Gestures)
                    {
                        if (gesture.GestureType == GestureType.Discrete)
                        {
                            DiscreteGestureResult result = null;
                            discreteResults.TryGetValue(gesture, out result);
                            if (gesture.Name == "point_right")
                            {
                                GameObject.Find("CreateDiagram").GetComponent <HistogramTexture> ().setHeight(result.Confidence);
                            }

                            /*if (result.Confidence > 0.05) {
                             * // Fire Event
                             *      if(OnGesture!=null){
                             *      //	Debug.Log("Detected Gesture " + gesture.Name + " with Confidence " + result.Confidence);
                             *      //	OnGesture(this,new KinectGestureEvent(gesture.Name, result.Confidence));
                             *      }
                             * }*/
                        }
                    }
                }
            }
        }
    }
    // **************************************************these are called every frame************************************************************

    private void GestureFrameArrived(object sender, VisualGestureBuilderFrameArrivedEventArgs e)    //for each GestureReader Event
    {
        VisualGestureBuilderFrameReference frameReference = e.FrameReference;

        using (VisualGestureBuilderFrame frame = frameReference.AcquireFrame()) {
            if (frame != null)
            {
                IDictionary <Gesture, DiscreteGestureResult> discreteResults = frame.DiscreteGestureResults; // get the discrete gesture results which arrived with the latest frame
                // retrun Gesture check the unity gesture scripts

                if (HashIdtb.ContainsKey(frame.TrackingId) && discreteResults != null && PlayerArgs.ContainsKey(frame.TrackingId))
                {
                    Dictionary <VisualGestureBuilderFrameSource, VisualGestureBuilderFrameReader> thisGestureGroup = HashIdtb[frame.TrackingId] as Dictionary <VisualGestureBuilderFrameSource, VisualGestureBuilderFrameReader>;

                    foreach (var GestureGroup in thisGestureGroup)  // we actually only have 1 group, should i use a struct or something else?

                    {
                        var thisSource = GestureGroup.Key;
                        foreach (Gesture gesture in thisSource.Gestures)     //all the gesture in gesturedatabase
                        {
                            if (gesture.GestureType == GestureType.Discrete) //check the type
                            {
                                DiscreteGestureResult result = null;
                                discreteResults.TryGetValue(gesture, out result);
                                if (OnGestureData != null) //we emit event EVERY GESTURE RESULT
                                {
                                    OnGestureData(this, new KinectGestureDataEvent(gesture.Name, result.Confidence, frame.TrackingId, PlayerArgs[frame.TrackingId]));
                                }
                            }
                        }
                    }
                }
            }
        }
    }
Example #8
0
    void _gestureFrameReader_FrameArrived(object sender, VisualGestureBuilderFrameArrivedEventArgs e)
    {
        VisualGestureBuilderFrameReference frameReference = e.FrameReference;

        using (VisualGestureBuilderFrame frame = frameReference.AcquireFrame()) {
            if (frame != null && frame.DiscreteGestureResults != null)
            {
                DiscreteGestureResult result = null;
                if (frame.DiscreteGestureResults.Count > 0)
                {
                    result = frame.DiscreteGestureResults [_menu];
                }
                if (result == null | !menuGestureOk)
                {
                    return;
                }

                if (result.Detected == true & buttonPushed < Time.time - 1f)
                {
                    source.PlayOneShot(menuToggled, 0.5f);
                    menu.enabled = !menu.enabled;                      //hide show menu
                    buttonPushed = Time.time;
                }
            }
        }
    }
Example #9
0
        /// <summary>
        /// Handles gesture detection results arriving from the sensor for the associated body tracking Id
        /// </summary>
        /// <param name="sender">object sending the event</param>
        /// <param name="e">event arguments</param>
        ///


        private void Reader_GestureFrameArrived(object sender, VisualGestureBuilderFrameArrivedEventArgs e)
        {
            VisualGestureBuilderFrameReference frameReference = e.FrameReference;

            using (VisualGestureBuilderFrame frame = frameReference.AcquireFrame())
            {
                if (frame != null)
                {
                    // get the discrete gesture results which arrived with the latest frame
                    IReadOnlyDictionary <Gesture, DiscreteGestureResult> discreteResults = frame.DiscreteGestureResults;

                    if (discreteResults != null)
                    {
                        foreach (Gesture gesture in this.vgbFrameSource.Gestures)
                        {
                            DiscreteGestureResult result = null;
                            discreteResults.TryGetValue(gesture, out result);
                            if (result != null)
                            {
                                if (result.Confidence > 0 && gesture.GestureType == GestureType.Discrete)  //gesture.Name.Equals(this.crossedArms)
                                {
                                    // System.Diagnostics.Debug.WriteLine(vgbFrameSource.TrackingId);
                                    // update the GestureResultView object with new gesture result values
                                    this.GestureResultView.UpdateGestureResult(gesture.Name, true, result.Detected, result.Confidence);
                                }
                                if (result.Confidence < 0.15)
                                {
                                    this.GestureResultView.UpdateGestureResult(gesture.Name, true, result.Detected, 0);
                                }
                            }
                        }
                    }
                }
            }
        }
 void FrameArrived(object sender, VisualGestureBuilderFrameArrivedEventArgs e)
 {
     if (canPose)
     {
         VisualGestureBuilderFrameReference frameReference = e.FrameReference;
         using (VisualGestureBuilderFrame frame = frameReference.AcquireFrame())
         {
             if (frame != null && frame.DiscreteGestureResults != null)
             {
                 DiscreteGestureResult result = null;
                 if (frame.DiscreteGestureResults.Count > 0)                         //if there is one or more potential gesture being detected by the kinect
                 {
                     for (int i = 0; i < gestures.Count; i++)                        //for each gesture in the database
                     {
                         result = frame.DiscreteGestureResults[gestures[i].gesture]; //get the result of gesture i
                         if (result.Detected == true)                                //if gesture i was detected
                         {
                             //   gestures[i].trigger.Invoke();//call the unityevent attacked to the gesture
                             Model.SetActive(true);
                             Model.GetComponent <MeshFilter>().mesh = gestures[i].mesh;
                             StopCapture();
                         }
                     }
                 }
             }
         }
     }
 }
Example #11
0
        public void addGestures(VisualGestureBuilderFrame gestureFrame, ulong id, List <Gesture> discrete, List <Gesture> continuous)
        {
            DateTime          reference    = new DateTime(2001, 01, 01, 0, 0, 0, DateTimeKind.Utc);
            TimeSpan          duration     = new TimeSpan(DateTime.UtcNow.Ticks - reference.Ticks);
            ulong             minutesCount = Convert.ToUInt64(duration.TotalMinutes);
            OscTimeTag        timestamp    = new OscTimeTag(minutesCount);
            List <OscMessage> messages     = new List <OscMessage>();

            foreach (Gesture gest in discrete)
            {
                DiscreteGestureResult result = gestureFrame.DiscreteGestureResults[gest];
                messages.Add(messageBuilder.BuildGestureMessage(id.ToString(), gest.Name, result.Detected, result.Confidence));
            }

            foreach (Gesture gest in continuous)
            {
                ContinuousGestureResult result = gestureFrame.ContinuousGestureResults[gest];
                messages.Add(messageBuilder.BuildGestureMessage(id.ToString(), gest.Name, result.Progress));
            }


            OscBundle target = new OscBundle(timestamp, messages.ToArray());

            this.Broadcast(target);
        }
        /// <summary>
        /// Handles gesture detection results arriving from the sensor for the associated body tracking Id
        /// </summary>
        /// <param name="sender">object sending the event</param>
        /// <param name="e">event arguments</param>
        private void Reader_GestureFrameArrived(object sender, VisualGestureBuilderFrameArrivedEventArgs e)
        {
            VisualGestureBuilderFrameReference frameReference = e.FrameReference;

            using (VisualGestureBuilderFrame frame = frameReference.AcquireFrame())
            {
                if (frame != null)
                {
                    // get the discrete gesture results which arrived with the latest frame
                    IReadOnlyDictionary <Gesture, DiscreteGestureResult> discreteResults = frame.DiscreteGestureResults;

                    if (discreteResults != null)
                    {
                        Parallel.ForEach(this.vgbFrameSource.Gestures, gesture =>
                        {
                            DiscreteGestureResult result = null;
                            discreteResults.TryGetValue(gesture, out result);

                            if (result.Detected)
                            {
                                gestureActions[gesture.Name].Invoke();
                            }
                            else if (gesture.Name == "Block")
                            {
                                Release(NesButtons.Down);
                            }
                        });
                    }
                }
            }
        }
Example #13
0
    /// <summary>
    /// Handles gesture detection results arriving from the sensor for the associated body tracking Id
    /// </summary>
    /// <param name="sender">object sending the event</param>
    /// <param name="e">event arguments</param>
    private void Reader_GestureFrameArrived(object sender, VisualGestureBuilderFrameArrivedEventArgs e)
    {
        VisualGestureBuilderFrameReference frameReference = e.FrameReference;

        using (VisualGestureBuilderFrame frame = frameReference.AcquireFrame())
        {
            if (frame != null)
            {
                // get the discrete gesture results which arrived with the latest frame
                var discreteResults = frame.DiscreteGestureResults;

                if (discreteResults != null)
                {
                    // we only have one gesture in this source object, but you can get multiple gestures
                    foreach (Gesture gesture in this.vgbFrameSource.Gestures)
                    {
                        if (gesture.Name.Equals(this.GestureClapping) && gesture.GestureType == GestureType.Discrete)
                        {
                            DiscreteGestureResult result = null;
                            discreteResults.TryGetValue(gesture, out result);

                            if (result != null)
                            {
                                if (this.OnGestureDetected != null)
                                {
                                    this.OnGestureDetected(this, new GestureEventArgs(true, result.Detected, result.Confidence, this.GestureClapping));
                                }
                            }
                        }
                        if (gesture.Name.Equals(this.GestureHandShake_Right) && gesture.GestureType == GestureType.Discrete)
                        {
                            DiscreteGestureResult result = null;
                            discreteResults.TryGetValue(gesture, out result);

                            if (result != null)
                            {
                                if (this.OnGestureDetected != null)
                                {
                                    this.OnGestureDetected(this, new GestureEventArgs(true, result.Detected, result.Confidence, this.GestureHandShake_Right));
                                }
                            }
                        }
                        if (gesture.Name.Equals(this.GestureLeftRotation_Right) && gesture.GestureType == GestureType.Discrete)
                        {
                            DiscreteGestureResult result = null;
                            discreteResults.TryGetValue(gesture, out result);

                            if (result != null)
                            {
                                if (this.OnGestureDetected != null)
                                {
                                    this.OnGestureDetected(this, new GestureEventArgs(true, result.Detected, result.Confidence, this.GestureHandShake_Right));
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    /// Handles gesture detection results arriving from the sensor for the associated body tracking Id private
    void GestureFrameArrived(object sender, VisualGestureBuilderFrameArrivedEventArgs e)
    {
        VisualGestureBuilderFrameReference frameReference = e.FrameReference;

        using (VisualGestureBuilderFrame frame = frameReference.AcquireFrame())
        {
            if (frame != null)
            {
                // get the discrete gesture results which arrived with the latest frame
                IDictionary <Gesture, DiscreteGestureResult> discreteResults = frame.DiscreteGestureResults;
                if (discreteResults != null)
                {
                    foreach (Gesture gesture in _Source.Gestures)
                    {
                        if (gesture.GestureType == GestureType.Discrete)
                        {
                            DiscreteGestureResult result = null;
                            discreteResults.TryGetValue(gesture, out result);

                            if (result.Confidence > 0.05)
                            {
                                // Fire Event
                                if (OnGesture != null)
                                {
                                    Debug.Log("Detected Gesture " + gesture.Name + " with Confidence " + result.Confidence);
                                    OnGesture(this, new KinectGestureEvent(gesture.Name, result.Confidence));
                                }
                            }
                        }
                    }
                }
            }
        }
    }
        private void Reader_GestureFrameArrived(object sender, VisualGestureBuilderFrameArrivedEventArgs e)
        {
            VisualGestureBuilderFrameReference frameReference = e.FrameReference;

            using (VisualGestureBuilderFrame frame = frameReference.AcquireFrame())
            {
                if (frame != null)
                {
                    //Get the gesture results from the last frame
                    IReadOnlyDictionary <Gesture, DiscreteGestureResult> discreteResults = frame.DiscreteGestureResults;

                    if (discreteResults != null)
                    {
                        foreach (Gesture gesture in this.vgbFrameSource.Gestures)
                        {
                            if (gesture.Name.Equals(this.waveName) && gesture.GestureType == GestureType.Discrete)
                            {
                                DiscreteGestureResult result = null;
                                discreteResults.TryGetValue(gesture, out result);

                                if (result != null && result.Confidence > 0.8) //Limit the amount of results which are reported back, by setting a minimum confidence level
                                {
                                    if (result.Confidence == 1)
                                    {
                                        this.GestureResultView.GestureCount++;
                                    }
                                    this.GestureResultView.UpdateGestureResult(true, result.Detected, result.Confidence); //Report back the updated gesture result
                                }
                            }
                        }
                    }
                }
            }
        }
        private void Reader_GestureFrameArrived(object sender, VisualGestureBuilderFrameArrivedEventArgs e)
        {
            VisualGestureBuilderFrameReference frameReference = e.FrameReference;

            using (VisualGestureBuilderFrame frame = frameReference.AcquireFrame())
            {
                if (frame != null)
                {
                    IReadOnlyDictionary <Gesture, DiscreteGestureResult>   discreteResults   = frame.DiscreteGestureResults;
                    IReadOnlyDictionary <Gesture, ContinuousGestureResult> continuousResults =
                        frame.ContinuousGestureResults;
                    if (discreteResults != null)
                    {
                        DiscreteGestureResult SwipeFromLeftResult  = null;
                        DiscreteGestureResult SwipeFromRightResult = null;
                        DiscreteGestureResult ZoomOutResult        = null;

                        discreteResults.TryGetValue(ZoomOut, out ZoomOutResult);
                        discreteResults.TryGetValue(RightToLeft, out SwipeFromRightResult);
                        discreteResults.TryGetValue(LeftToRight, out SwipeFromLeftResult);
                        if (EnableSwipe && SwipeFromRightResult != null && SwipeFromRightResult.Detected && SwipeFromRightResult.Confidence > 0.35)
                        {
                            Trace.WriteLine("Swipe from right");
                            OnSwipe(GestureType.RightToLeft);
                            EnableSwipe = false;
                            ResetSwipe(gestureResetTime);
                        }
                        if (EnableSwipe && SwipeFromLeftResult != null && SwipeFromLeftResult.Detected && SwipeFromLeftResult.Confidence > 0.35)
                        {
                            Trace.WriteLine("swipe from left");
                            OnSwipe(GestureType.LeftToRight);
                            EnableSwipe = false;
                            ResetSwipe(gestureResetTime);
                        }


                        if (EnableZoom && ZoomOutResult != null && ZoomOutResult.Detected && ZoomOutResult.Confidence > 0.5)
                        {
                            OnZoomOut();
                        }
                    }
                    if (continuousResults != null)
                    {
                        ContinuousGestureResult ClapResult = null;
                        continuousResults.TryGetValue(clapGesture, out ClapResult);
                        if (EnableClap && ClapResult != null)
                        {
                            float clapProg = ClapResult.Progress;
                            if (clapProg > 1.85 && clapProg < 3)
                            {
                                Trace.WriteLine("Clap detected");
                                EnableClap = false;
                                ResetClap(gestureResetTime);
                            }
                        }
                    }
                }
            }
        }
Example #17
0
        void vgbFrameReader_FrameArrived(object sender, VisualGestureBuilderFrameArrivedEventArgs e)
        {
            VisualGestureBuilderFrameReference frameReference = e.FrameReference;

            using (VisualGestureBuilderFrame frame = frameReference.AcquireFrame())
            {
                if (frame != null)
                {
                    // get the discrete gesture results which arrived with the latest frame
                    IReadOnlyDictionary <Gesture, DiscreteGestureResult> discreteResults = frame.DiscreteGestureResults;

                    if (discreteResults != null)
                    {
                        int i = 0;
                        // we only have one gesture in this source object, but you can get multiple gestures
                        foreach (Gesture gesture in this.vgbFrameSource.Gestures)
                        {
                            if (gesture.GestureType == GestureType.Discrete)
                            {
                                DiscreteGestureResult result = null;
                                discreteResults.TryGetValue(gesture, out result);

                                if (result != null)
                                {
                                    this.gesturedetected[i]   = result.Detected;
                                    this.gestureconfidence[i] = result.Confidence;
                                }
                            }
                            i++;
                        }
                    }

                    IReadOnlyDictionary <Gesture, ContinuousGestureResult> continuousResults = frame.ContinuousGestureResults;

                    if (continuousResults != null)
                    {
                        int i = 0;
                        // we only have one gesture in this source object, but you can get multiple gestures
                        foreach (Gesture gesture in this.vgbFrameSource.Gestures)
                        {
                            if (gesture.GestureType == GestureType.Continuous)
                            {
                                ContinuousGestureResult result = null;
                                continuousResults.TryGetValue(gesture, out result);

                                if (result != null)
                                {
                                    this.gestureprogress[i] = result.Progress;
                                }
                            }
                            i++;
                        }
                    }
                }
            }
        }
Example #18
0
    /// Handles gesture detection results arriving from the sensor for the associated body tracking Id
    protected virtual void GestureFrameArrived(object sender, VisualGestureBuilderFrameArrivedEventArgs e)
    {
        VisualGestureBuilderFrameReference frameReference = e.FrameReference;

        using (VisualGestureBuilderFrame frame = frameReference.AcquireFrame())
        {
            if (frame != null)
            {
                // get the discrete gesture results which arrived with the latest frame
                IDictionary <Gesture, DiscreteGestureResult> discreteResults = frame.DiscreteGestureResults;

                if (discreteResults != null)
                {
                    foreach (Gesture gesture in _Source.Gestures)
                    {
                        if (gesture.GestureType == GestureType.Discrete)
                        {
                            DiscreteGestureResult result = null;
                            discreteResults.TryGetValue(gesture, out result);


                            if (result != null)
                            {
                                // Fire Event
                                if (result.Detected)
                                {
                                    //Debug.Log("Detected Gesture " + gesture.Name + " with Confidence " + result.Confidence);
                                    if (result.Confidence >= MinConfidence)
                                    {
                                        DetectedConfidence      = result.Confidence;
                                        this.CurrentGestureName = gesture.Name;
                                        DetectedWork();

                                        OnGesture(new EventArgs(gesture.Name, result.Confidence));
                                    }
                                    else
                                    {
                                        this.CurrentGestureName = string.Empty;
                                        this.DetectedConfidence = 0.0f;
                                    }
                                }
                                else
                                {
                                    this.CurrentGestureName = string.Empty;
                                    this.DetectedConfidence = 0.0f;
                                    NotDetectedWork();
                                }
                                // OnGesture(new EventArgs(gesture.Name, result.Confidence));
                                //
                            }
                        }
                    }
                }
            }
        }
    }
Example #19
0
 private Tuple <string, double> ProcessDiscreteGesture(DiscreteGestureResult detected, string gestureName)
 {
     if (((gestureName.Equals(muteGestureName) || gestureName.Equals(kickGestureName) || gestureName.Equals(banGestureName) ||
           gestureName.Equals(selfDeafGestureName) || gestureName.Equals(deafGestureName) || gestureName.Equals(selfMuteGestureName)) &&
          detected.Confidence > .25) || detected.Confidence > .70)
     {
         return(Tuple.Create <string, double>(gestureName, detected.Confidence));
     }
     return(Tuple.Create <string, double>(null, -1));
 }
Example #20
0
        /// <summary>
        /// Handles gesture detection results arriving from the sensor for the associated body tracking Id
        /// </summary>
        /// <param name="sender">object sending the event</param>
        /// <param name="e">event arguments</param>
        private void Reader_GestureFrameArrived(object sender, VisualGestureBuilderFrameArrivedEventArgs e)
        {
            Gesture localGesture = null;
            VisualGestureBuilderFrameReference frameReference = e.FrameReference;

            using (VisualGestureBuilderFrame frame = frameReference.AcquireFrame())
            {
                if (frame != null)
                {
                    // get the discrete gesture results which arrived with the latest frame
                    IReadOnlyDictionary <Gesture, DiscreteGestureResult> discreteResults = frame.DiscreteGestureResults;

                    if (discreteResults != null)
                    {
                        // we only have one gesture in this source object, but you can get multiple gestures
                        foreach (Gesture gesture in this.vgbFrameSource.Gestures)
                        {
                            DiscreteGestureResult result = null;
                            discreteResults.TryGetValue(gesture, out result);

                            if (result != null)
                            {
                                if (result.Detected)
                                {
                                    localGesture = gesture;
                                }
                                // update the GestureResultView object with new gesture result values
                                //this.GestureResultView.UpdateGestureResult(true, result.Detected, result.Confidence);
                            }
                        }
                    }
                }
            }

            if (currentWantedGesture == gestureNames.Length)
            {
                OnGestureFired?.Invoke();
                currentWantedGesture = 0;
                lastGesture          = null;
                return;
            }
            if (gestureNames[currentWantedGesture] == localGesture?.Name)
            {
                lastGesture     = localGesture;
                lastCoolGesture = DateTime.UtcNow;
                currentWantedGesture++;
                return;
            }
            if (lastGesture != null && DateTime.UtcNow - lastCoolGesture > TimeSpan.FromSeconds(5))
            {
                currentWantedGesture = 0;
                lastGesture          = null;
            }
        }
Example #21
0
        private void Reader_GestureFrameArrived(object sender, VisualGestureBuilderFrameArrivedEventArgs e)
        {
            VisualGestureBuilderFrameReference frameReference = e.FrameReference;

            lock (GestureResults)
            {
                using (VisualGestureBuilderFrame frame = frameReference.AcquireFrame())
                {
                    if (frame != null)
                    {
                        IReadOnlyDictionary <Gesture, DiscreteGestureResult> discreteResults = frame.DiscreteGestureResults;

                        if (discreteResults != null)
                        {
                            foreach (Gesture gesture in this.vgbFrameSource.Gestures)
                            {
                                if (gesture.GestureType == GestureType.Discrete)
                                {
                                    DiscreteGestureResult result = null;
                                    discreteResults.TryGetValue(gesture, out result);

                                    if (result != null)
                                    {
                                        GestureResult gr = GestureResults.FirstOrDefault(n => n.Name == gesture.Name);
                                        gr.UpdateGestureResult(gesture.Name, true, result.Detected, result.Confidence);
                                    }
                                }
                            }
                        }

                        IReadOnlyDictionary <Gesture, ContinuousGestureResult> continuousResults = frame.ContinuousGestureResults;

                        if (continuousResults != null)
                        {
                            foreach (Gesture gesture in this.vgbFrameSource.Gestures)
                            {
                                if (gesture.GestureType == GestureType.Continuous)
                                {
                                    ContinuousGestureResult result = null;
                                    continuousResults.TryGetValue(gesture, out result);

                                    if (result != null)
                                    {
                                        GestureResult gr = GestureResults.FirstOrDefault(n => n.Name == gesture.Name);
                                        gr.UpdateGestureResult(gesture.Name, true, true, result.Progress);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
Example #22
0
        /// <summary>
        /// This function reads every input frame from Kinect using VisualGestureBuilder API
        /// A valid frame is stored in an array as soon as it is received
        /// recordbodydata is a flag that is a boundary condition to record the coordinates to know about the status of last detected frame.
        /// The 'result' is set to true when gesture received from frame matches either start or end position of gestures
        /// The function passes to DTW for sequence matching when the start and end position are of same gesture.
        /// </summary>

        private void Reader_GestureFrameArrived(object sender, VisualGestureBuilderFrameArrivedEventArgs e)
        {
            VisualGestureBuilderFrameReference frameReference = e.FrameReference;

            using (VisualGestureBuilderFrame frame = frameReference.AcquireFrame())
            {
                if (frame != null)
                {
                    IReadOnlyDictionary <Gesture, DiscreteGestureResult> discreteResults = frame.DiscreteGestureResults;
                    if (discreteResults != null)
                    {
                        foreach (Gesture gesture in this.vgbFrameSource.Gestures)
                        {
                            if (gesture.GestureType == GestureType.Discrete)
                            {
                                DiscreteGestureResult result = null;
                                discreteResults.TryGetValue(gesture, out result);
                                if (result != null)
                                {
                                    this.GestureResultView.UpdateGestureResult(true, result.Detected, result.Confidence);
                                }

                                try
                                {
                                    //conditional statement to record body data
                                    if (RECORD_BODY_DATA == RECORD && result.Detected == false)
                                    {
                                        storebodycoordinates();//stores current frame
                                    }

                                    else if (result != null && result.Detected == true && result.Confidence >= 0.6)
                                    {
                                        if (KINECT_COORDINATES.Length != 0)
                                        {
                                            string result_gesture = passToDTW();
                                            RECORD_BODY_DATA = EMPTY;
                                            break;
                                        }
                                        RECORD_BODY_DATA = RECORD;
                                    }
                                }

                                catch (Exception ex)
                                {
                                    //do nothing
                                }
                            }
                        }
                    }
                }
            }
        }
        /// <summary>
        /// This function reads every input frame from Kinect using VisualGestureBuilder API
        /// A valid frame is stored in an array as soon as it is received
        /// recordbodydata is a flag that is a boundary condition to record the coordinates to know about the status of last detected frame.
        /// The 'result' is set to true when gesture received from frame matches either start or end position of gestures
        /// The function passes to DTW for sequence matching when the start and end position are of same gesture.
        /// </summary>
        private void Reader_GestureFrameArrived(object sender, VisualGestureBuilderFrameArrivedEventArgs e)
        {
            VisualGestureBuilderFrameReference frameReference = e.FrameReference;

            using (VisualGestureBuilderFrame frame = frameReference.AcquireFrame())
            {
                if (frame != null)
                {
                    IReadOnlyDictionary <Gesture, DiscreteGestureResult> discreteResults = frame.DiscreteGestureResults;
                    if (discreteResults != null)
                    {
                        foreach (Gesture gesture in this.vgbFrameSource.Gestures)
                        {
                            if (gesture.GestureType == GestureType.Discrete)
                            {
                                DiscreteGestureResult result = null;
                                discreteResults.TryGetValue(gesture, out result);
                                if (result != null)
                                {
                                    this.GestureResultView.UpdateGestureResult(true, result.Detected, result.Confidence);
                                }

                                try
                                {
                                    if (lastdetected == 1 && result.Detected == false)
                                    {
                                        storebodycoordinates();
                                    }

                                    else if (result != null && result.Detected == true && result.Confidence >= 0.6)
                                    {
                                        if (KINECT_COORDINATES.Length != 0 && lastcountdetected == 0)
                                        {
                                            SaveToFile(KINECT_COORDINATES);
                                            lastdetected      = 0;
                                            lastcountdetected = 1;
                                            break;
                                        }
                                        lastdetected = 1;
                                    }
                                }

                                catch (Exception ex)
                                {
                                }
                            }
                        }
                    }
                }
            }
        }
        private void gestureFrameReader_FrameArrived(object sender, VisualGestureBuilderFrameArrivedEventArgs e)
        {
            VisualGestureBuilderFrameReference frameReference = e.FrameReference;

            using (VisualGestureBuilderFrame frame = frameReference.AcquireFrame())
            {
                if (frame != null && waitingForOp())
                {
                    IReadOnlyDictionary <Gesture, DiscreteGestureResult> discreteResults = frame.DiscreteGestureResults;
                    if (discreteResults != null)
                    {
                        foreach (Gesture gesture in this.gestureFrameSource.Gestures)
                        {
                            DiscreteGestureResult result = null;
                            discreteResults.TryGetValue(gesture, out result);

                            if (result != null && result.Detected)
                            {
                                switch (gesture.Name)
                                {
                                case "Plus": if (result.Confidence > 0.8)
                                    {
                                        AddOperator("+");
                                    }
                                    break;

                                case "Minus": if (result.Confidence > 0.95)
                                    {
                                        AddOperator("-");
                                    }
                                    break;

                                case "Times": if (result.Confidence > 0.90)
                                    {
                                        AddOperator("*");
                                    }
                                    break;

                                case "divide": if (result.Confidence > 0.90)
                                    {
                                        AddOperator("/");
                                    }
                                    break;
                                }
                            }
                        }
                    }
                }
            }
        }
Example #25
0
    void _gestureFrameReader_FrameArrived(object sender, VisualGestureBuilderFrameArrivedEventArgs e)
    {
        VisualGestureBuilderFrameReference frameReference = e.FrameReference;

        using (VisualGestureBuilderFrame frame = frameReference.AcquireFrame())
        {
            if (frame != null && frame.DiscreteGestureResults != null)
            {
                if (AttachedObject == null)
                {
                    return;
                }

                DiscreteGestureResult result = null;

                if (frame.DiscreteGestureResults.Count > 0)
                {
                    result = frame.DiscreteGestureResults[_salute];
                }
                if (result == null)
                {
                    return;
                }

                if (result.Detected == true)
                {
                    var progressResult = frame.ContinuousGestureResults[_saluteProgress];
                    if (AttachedObject != null)
                    {
                        var   prog  = progressResult.Progress;
                        float scale = 0.5f + prog * 3.0f;
                        AttachedObject.transform.localScale = new Vector3(scale, scale, scale);
                        if (_ps != null)
                        {
                            _ps.emissionRate = 100 * prog;
                            _ps.startColor   = Color.red;
                        }
                    }
                }
                else
                {
                    if (_ps != null)
                    {
                        _ps.emissionRate = 4;
                        _ps.startColor   = Color.blue;
                    }
                }
            }
        }
    }
Example #26
0
        /// <summary>
        /// Handles gesture detection results arriving from the sensor for the associated body tracking Id
        /// </summary>
        /// <param name="sender">object sending the event</param>
        /// <param name="e">event arguments</param>
        private void Reader_GestureFrameArrived(object sender, VisualGestureBuilderFrameArrivedEventArgs e)
        {
            this.num_gestures_detected = 0;

            VisualGestureBuilderFrameReference frameReference = e.FrameReference;

            using (VisualGestureBuilderFrame frame = frameReference.AcquireFrame())
            {
                if (frame != null)
                {
                    // get the discrete gesture results which arrived with the latest frame
                    IReadOnlyDictionary <Gesture, DiscreteGestureResult> discreteResults = frame.DiscreteGestureResults;

                    if (discreteResults != null)
                    {
                        // we only have one gesture in this source object, but you can get multiple gestures
                        foreach (Gesture gesture in this.vgbFrameSource.Gestures)
                        {
                            if (gesture.GestureType == GestureType.Discrete)
                            {
                                DiscreteGestureResult result = null;
                                discreteResults.TryGetValue(gesture, out result);

                                if (result != null)
                                {
                                    // update the GestureResultView object with new gesture result values
                                    this.GestureResultView.UpdateGestureResult(true, result.Detected, result.Confidence, this.num_frames, this.num_frames_touchingface, this.num_frames_leaning);
                                    this.num_frames++;
                                    if (result.Detected && result.Confidence > .3)
                                    {
                                        this.num_gestures_detected++;
                                        if (gesture.Name == "TouchingFace")
                                        {
                                            this.num_frames_touchingface++;
                                        }
                                        if (gesture.Name == "Leaning")
                                        {
                                            this.num_frames_leaning++;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            // make call to change background with num_detected as a parameter
        }
    /// Handles gesture detection results arriving from the sensor for the associated body tracking Id
    private void GestureFrameArrived(object sender, VisualGestureBuilderFrameArrivedEventArgs e)
    {
        VisualGestureBuilderFrameReference frameReference = e.FrameReference;

        using (VisualGestureBuilderFrame frame = frameReference.AcquireFrame())
        {
            if (frame != null)
            {
                // get the discrete gesture results which arrived with the latest frame
                IDictionary <Gesture, DiscreteGestureResult> discreteResults = frame.DiscreteGestureResults;

                if (discreteResults != null)
                {
                    List <EventArgs> Results = new List <EventArgs>();

                    foreach (Gesture gesture in _Source.Gestures)
                    {
                        //Debug.Log(gesture.Name);
                        //Debug.Log(gesture.GestureType);
                        if (gesture.GestureType == GestureType.Discrete)    //离散型
                        {
                            DiscreteGestureResult result = null;
                            discreteResults.TryGetValue(gesture, out result);

                            if (result != null)
                            {
                                if (IsDetected(Priority[gesture.Name], result.Confidence))       //该动作是否完成
                                {
                                    Results.Add(new EventArgs(gesture.Name, result.Confidence)); //完成则加入判断列表

                                    //Debug.Log("Detected Gesture " + gesture.Name + " with Confidence " + result.Confidence);
                                    // Fire Event
                                    //OnGesture(new EventArgs(gesture.Name, result.Confidence));
                                    //return;
                                }
                            }
                        }
                    }

                    EventArgs Result = GestureJudgement(Results);
                    Debug.Log("Detected Gesture " + Result.name + " with Confidence " + Result.confidence.ToString());
                    OnGesture(Result);
                }
            }

            //OnGesture(new EventArgs("NO-Gesture", 0));
        }
    }
Example #28
0
    void _gestureFrameReader_FrameArrived(object sender, VisualGestureBuilderFrameArrivedEventArgs e)
    {
        VisualGestureBuilderFrameReference frameReference = e.FrameReference;

        using (VisualGestureBuilderFrame frame = frameReference.AcquireFrame())
        {
            if (frame != null && frame.DiscreteGestureResults != null)
            {
                gesture1 = gesture2 = gesture3 = gesture4 = null;

                gesture1 = frame.DiscreteGestureResults[_gesture1];
                gesture2 = frame.DiscreteGestureResults[_gesture2];

                Do_things(frame);
            }
        }
    }
Example #29
0
        public void UpdateGestureResult(string gestureName, DiscreteGestureResult result, float progress)
        {
            ////Checking for start geture
            //if (!CurrentExercise.IsStart)
            //{
            //    VTGesture startGesture = CurrentExercise.StartGesutre;

            //    //checking if the gesture is the start
            //    if (gestureName.Equals(startGesture.GestureName))
            //    {
            //        //checking if it detected
            //        // todo - add confidace threshold
            //        if (result.Detected ) //&& result.Confidence >= startGesture.ConfidanceTrshold)
            //        {
            //            startGesture.IsSuccess = result.Detected;
            //            //startGesture.ConfidenceValue = result.Confidence;
            //            CurrentExercise.IsStart = true;

            //            //throw event to UI
            //            startGestureDeteced();
            //        }
            //    }
            //}
            //else
            //{

            //}

            if (!CurrentExercise.IsFinish)
            {
                if (result.Detected)
                {
                    CurrentExercise.IsStart = true;
                    startGestureDeteced();
                }

                if (progress <= 0.02f && result.Confidence <= 0.001f && !result.Detected)
                {
                    CheckIfRoundSucces();
                }
                else
                {
                    CurrentExercise.CurrentRound.UpdateGestureDetection(gestureName, result, progress);
                }
            }
        }
Example #30
0
 private void vgbr_FrameArrived(object sender, VisualGestureBuilderFrameArrivedEventArgs e)
 {
     using (var frame = e.FrameReference.AcquireFrame())
     {
         if (frame != null)
         {
             if (vgbfs.IsTrackingIdValid)
             {
                 IReadOnlyDictionary <Gesture, DiscreteGestureResult> discreteResult = frame.DiscreteGestureResults;
                 if (discreteResult != null)
                 {
                     foreach (Gesture gesture in this.vgbfs.Gestures)
                     {
                         if (gesture.Name.Equals(" D_cabeza") && gesture.GestureType == GestureType.Discrete)
                         {
                             DiscreteGestureResult result = null;
                             discreteResult.TryGetValue(gesture, out result);
                             if (result != null)
                             {
                                 if (result.Detected && result.FirstFrameDetected)
                                 {
                                     // Console.WriteLine("Cabeza");
                                     label1.Text = " D_cabeza";
                                 }
                             }
                         }
                         else if (gesture.Name.Equals("D_garganta") && gesture.GestureType == GestureType.Discrete)
                         {
                             DiscreteGestureResult result = null;
                             discreteResult.TryGetValue(gesture, out result);
                             if (result != null)
                             {
                                 if (result.Detected && result.FirstFrameDetected)
                                 {
                                     //Console.WriteLine("Oreja");
                                     label1.Text = "D_garganta";
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
 }