Пример #1
0
        /// <summary>
        /// Update the gesture triggers from the gesture recognition module
        /// </summary>
        /// <param name="triggers">Gesture trigger list</param>
        public void Update2(GestureTriggers triggers)
        {
            if (triggers != null)
            {
                lock (_object)
                {
                    if (_humans.Count > 0)
                    {
                        //Console.WriteLine(triggers.id);
                        
                        var item = _humans.FirstOrDefault(s => s.Body.TrackingId == triggers.id);
                        if (item != null)
                        {
                            foreach (var trigger in triggers.motion)
                            {
                                var gest = item.Gestures.FirstOrDefault(g => g.Name == trigger.name);

                                if (gest != null && !string.IsNullOrEmpty(trigger.name))
                                {
                                    gest.Refresh(trigger);
                                }
                                else
                                {
                                    if (!string.IsNullOrEmpty(trigger.name))
                                    {
                                        var newGest = new Gesture(trigger.name, (GestureMode) trigger.type);
                                        newGest.Refresh(trigger);
                                        item.Gestures.Add(newGest);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
Пример #2
0
        public void PublishGestureTrigger(GestureTriggers gesture, bool force = false)
        {
            if (gesture != null && gesture.motion.Count > 0 && _socket != null)
            {
                lock (_sync)
                {
                    _socket.SendMore(_topic);

                    using (var ms = new MemoryStream())
                    {
                        Serializer.Serialize(ms, gesture);
                        _socket.Send(ms.GetBuffer(), (int) ms.Length);
                    }
                }
            }
        }
Пример #3
0
        private void PublishDiscreteGestureResult(IReadOnlyDictionary<Gesture, DiscreteGestureResult> discreteResults)
        {
            try
            {
                if (discreteResults != null && _vgbFrameSource != null && _vgbFrameSource.Gestures != null &&
                    _vgbFrameSource.Gestures.Count > 0 && GestureResultView != null)
                {
                    GestureTriggers triggers = new GestureTriggers {id = GestureResultView.BodyIndex};
                    //GestureTriggers triggers = new GestureTriggers { id = (int)TrackingId };
                    //Log.InfoFormat("Publishing gesture results for body: {0}", GestureResultView.BodyIndex);
                    //Console.WriteLine(@"Publishing gesture results for body: {0}", GestureResultView.BodyIndex);
                    Console.WriteLine(GestureResultView.BodyIndex);
                    // For publishing

#if ORIGINAL
                    foreach (Gesture gesture in _vgbFrameSource.Gestures)
                    {
                        //System.Diagnostics.Debug.WriteLine(gesture.Name);
                        if (gesture.GestureType == GestureType.Discrete && _gestures.Contains(gesture.Name))
                            //if (gesture.GestureType == GestureType.Discrete)
                            //if (gesture.Name.Equals(this.seatedGestureName) && gesture.GestureType == GestureType.Discrete)
                        {
                            //if (gesture.Name != GestureNames.HandwaveRight)
                            //{
                            //    continue;
                            //}
                            DiscreteGestureResult result;
                            discreteResults.TryGetValue(gesture, out result);
                            var trigger = new GestureDescription
                            {
                                name = gesture.Name,
                                progress = 0,
                                type = (GestureDescription.GestureType) gesture.GestureType,
                                active = result != null && result.Detected,
                                confidence = result != null ? (int) (result.Confidence*100.00) : 0
                            };
                            triggers.motion.Add(trigger);
                        }
                    }
#else
                    foreach (var discreteResult in discreteResults)
                    {
                        var gesture = discreteResult.Key;
                        var result = discreteResult.Value;
                        var trigger = new GestureDescription
                        {
                            name = gesture.Name,
                            progress = 0,
                            type = (GestureDescription.GestureType)gesture.GestureType,
                            active = result != null && result.Detected,
                            confidence = result != null ? (int)(result.Confidence * 100.00) : 0
                        };
                        triggers.motion.Add(trigger);
                    }
#endif

                    GestureTriggerPublisher.Instance.PublishGestureTrigger(triggers);

                }
            }
            catch (Exception ex)
            {
                Log.ErrorFormat("Exception occured while publishing gesture data: {0}", ex.Message);
            }
        }