|
@@ -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)
|