--- /dev/null
+#ifndef _MULTI_TRACKER_H_
+#define _MULTI_TRACKER_H_
+
+#include "Tracker.h"
+#include "Detector.h"
+#include "Metrics.h"
+#include "SharedPtr.h"
+#include <opencv2/opencv.hpp>
+
+namespace suanzi {
+
+ 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);
+ };
+
+
+}
+
+#endif /* _MULTI_TRACKER_H_ */