190225d55c3f76a736f61da11faa848e119d630f
[trackerpp.git] / include / MultiTracker.h
1 #ifndef _MULTI_TRACKER_H_
2 #define _MULTI_TRACKER_H_
3
4 #include "Tracker.h"
5 #include "Detector.h"
6 #include "SharedPtr.h"
7 #include "PredictorWrapper.h"
8 #include <opencv2/opencv.hpp>
9
10 namespace suanzi {
11
12     TK_DECLARE_PTR(Patch);
13     TK_DECLARE_PTR(MultiTracker);
14     TK_DECLARE_PTR(Tracker);
15
16     class MultiTracker 
17     {
18     public:
19         MultiTracker();
20         virtual ~MultiTracker();
21         void update(unsigned int total, const Detection* d, const cv::Mat& image);
22
23     private:
24         std::vector<TrackerPtr> trackers;
25         int max_id = 0;
26         PatchPtr createPatch(const cv::Mat& image);
27         double distance(TrackerPtr t, const cv::Mat& image, const Detection& d);
28         PredictorWrapperPtr predictor;
29         cv::HOGDescriptor descriptor;
30     };
31
32     class Patch
33     {
34     public:
35         ~Patch(){};
36         // bb_ltrb
37         cv::Mat image_crop;
38         std::vector<float> features;
39     protected:
40         friend class MultiTracker;
41         Patch(){};
42     };
43
44
45 }
46
47 #endif /* _MULTI_TRACKER_H_ */