Prechádzať zdrojové kódy

moved fingerTracker logging to trackableObjectHistory

Alexander Hendrich 10 rokov pred
rodič
commit
95f8384b2b

+ 1 - 1
bbiwarg/Constants.cs

@@ -13,7 +13,7 @@ namespace bbiwarg
     {
         // Logger
         public static readonly LogSubject LogLevel =
-            LogSubject.None;
+            LogSubject.FingerTracker;
         
         // Output
         public static readonly int OutputNumImages = 5;

+ 26 - 5
bbiwarg/Recognition/Tracking/TrackableObjectHistory.cs

@@ -3,6 +3,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using bbiwarg.Utility;
 
 namespace bbiwarg.Recognition.Tracking
 {
@@ -16,34 +17,54 @@ namespace bbiwarg.Recognition.Tracking
         public TrackableObject CurrentObject { get { return TrackedObjects[TrackedObjects.Count - 1]; } }
         public TrackingState CurrentState { get { return States[States.Count - 1]; } }
         public int NumFramesInCurrentState { get; private set; }
+        private String className;
+        private LogSubject logSubject;
         private int numFramesUntilTracked;
 
-        public TrackableObjectHistory(int numFramesUntilTracked) {
+        public TrackableObjectHistory(LogSubject logSubject, int numFramesUntilTracked)
+        {
             ID = getNextUnusedID();
             TrackedObjects = new List<T>();
             States = new List<TrackingState>();
             TrackedObjects.Add(null);
             States.Add(TrackingState.None);
             NumFramesInCurrentState = 1;
+            this.className = typeof(T).Name;
+            this.logSubject = logSubject;
             this.numFramesUntilTracked = numFramesUntilTracked;
         }
 
-        ~TrackableObjectHistory() {
+        ~TrackableObjectHistory()
+        {
             setIDUnused(ID);
         }
 
-        public void addObjectToHistory(T detectedObject) {
+        public void addObjectToHistory(T detectedObject)
+        {
             TrackingState previousState = CurrentState;
             TrackingState newState = TrackingState.None;
 
             if (detectedObject != null)
             {
-                if (previousState == TrackingState.Tracked)
+                if (previousState == TrackingState.None)
+                {
+                    newState = TrackingState.Detected;
+                    Logger.log(className + " #" + ID + " detected", logSubject);
+                }
+                else if (previousState == TrackingState.Lost)
+                {
+                    newState = TrackingState.Tracked;
+                    Logger.log(className + " #" + ID.ToString() + " re-tracked", logSubject);
+                }
+                else if (previousState == TrackingState.Tracked)
                     newState = TrackingState.Tracked;
                 else if (previousState == TrackingState.Detected)
                 {
                     if (NumFramesInCurrentState == numFramesUntilTracked)
+                    {
                         newState = TrackingState.Tracked;
+                        Logger.log(className + " #" + ID.ToString() + " tracked", logSubject);
+                    }
                     else
                         newState = TrackingState.Detected;
                 }
@@ -51,7 +72,7 @@ namespace bbiwarg.Recognition.Tracking
                 LastObject = detectedObject;
                 detectedObject.setTracked(ID);
             }
-            else 
+            else
                 newState = TrackingState.Lost;
 
             if (newState == previousState)

+ 8 - 14
bbiwarg/Recognition/Tracking/Tracker.cs

@@ -10,10 +10,10 @@ namespace bbiwarg.Recognition.Tracking
 {
     public enum TrackingState
     {
-        None,
-        Detected,
-        Tracked,
-        Lost,
+        None = 0,
+        Detected = 1,
+        Tracked = 2,
+        Lost = 3,
     }
 
     class Tracker<T> where T : TrackableObject
@@ -50,9 +50,9 @@ namespace bbiwarg.Recognition.Tracking
             {
                 foreach (T detectedObject in detectedObjects)
                 {
-                    TrackableObjectHistory<T> history = new TrackableObjectHistory<T>(numFramesUntilTracked);
+                    TrackableObjectHistory<T> history = new TrackableObjectHistory<T>(logSubject, numFramesUntilTracked);
                     history.addObjectToHistory(detectedObject);
-                    addToHistories(history);
+                    Histories.Add(history);
                 }
             }
             else
@@ -92,9 +92,9 @@ namespace bbiwarg.Recognition.Tracking
             //add new history for each new unasigned detectedObject
             foreach (T unasignedDetectedObject in unasignedDetectedObjects)
             {
-                TrackableObjectHistory<T> newHistory = new TrackableObjectHistory<T>(numFramesUntilTracked);
+                TrackableObjectHistory<T> newHistory = new TrackableObjectHistory<T>(logSubject, numFramesUntilTracked);
                 newHistory.addObjectToHistory(unasignedDetectedObject);
-                addToHistories(newHistory);
+                Histories.Add(newHistory);
             }
 
             //add null-object to each unasigned history (didn't find a best fit during this frame -> lost track)
@@ -150,11 +150,5 @@ namespace bbiwarg.Recognition.Tracking
                 }
             }
         }
-
-        private void addToHistories(TrackableObjectHistory<T> history)
-        {
-            Histories.Add(history);
-            Logger.log(className + " #" + history.ID + " detected", logSubject);
-        }
     }
 }