/// <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); } } } } } } } }
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); } } } }
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); } }