#define _MULTI_TRACKER_H_
#include "Tracker.h"
+#include "Detector.h"
#include "Metrics.h"
+#include "SharedPtr.h"
+#include <opencv2/opencv.hpp>
namespace suanzi {
-class MultiTracker
-{
-public:
- MultiTracker(Metrics* m);
- virtual ~MultiTracker();
- void addTracker(Tracker *t);
- void removeTracker(Tracker *t);
- Tracker* createTracker(int id = 0);
- void update();
-
-
-private:
- Metrics* metrics;
- std::set<Tracker*> trackers;
- int max_id = 0;
-};
+ TK_DECLARE_PTR(MultiTracker);
+
+ class MultiTracker
+ {
+ public:
+ MultiTracker(MetricsPtr m);
+ virtual ~MultiTracker();
+ void update(unsigned int total, const Detection* d, const cv::Mat& image);
+
+ private:
+ MetricsPtr metrics;
+ std::set<TrackerPtr> trackers;
+ int max_id = 0;
+ void addTracker(TrackerPtr t);
+ TrackerPtr createTracker(int id = 0);
+ void removeTracker(TrackerPtr t);
+ void correctTrackers(MetricsPtr m, cv::Mat& image);
+ void initNewTrackers(cv::Mat& iamge);
+ };
}