Add worker thread
[trackerpp.git] / include / MultiTracker.h
index 40744b8..66ea04e 100644 (file)
@@ -3,30 +3,49 @@
 
 #include "Tracker.h"
 #include "Detector.h"
-#include "Metrics.h"
 #include "SharedPtr.h"
+#include "PredictorWrapper.h"
 #include <opencv2/opencv.hpp>
+#include <utility>
+#include "Engine.h"
 
 namespace suanzi {
 
+    TK_DECLARE_PTR(Patch);
     TK_DECLARE_PTR(MultiTracker);
+    TK_DECLARE_PTR(Tracker);
+    TK_DECLARE_PTR(Engine);
 
     class MultiTracker 
     {
     public:
-        MultiTracker(MetricsPtr m);
+        MultiTracker(EngineWPtr e);
         virtual ~MultiTracker();
         void update(unsigned int total, const Detection* d, const cv::Mat& image);
 
     private:
-        MetricsPtr metrics;
         std::vector<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);
+        PatchPtr createPatch(const cv::Mat& image, const Detection& d);
+        double distance(TrackerPtr t, const cv::Mat& image, const Detection& d);
+        PredictorWrapperPtr predictor;
+        cv::HOGDescriptor descriptor;
+        EngineWPtr engine;
+    };
+
+    class Patch
+    {
+    public:
+        ~Patch(){};
+        cv::Mat image_crop;
+        //std::vector<double> features;
+        // hog is a hog descriptor of the image (calculated by hog.compute. size is 3780 )
+        // hue is a histogram of the image, (calcHist(), is a Mat with (width x height) 64 x 45)
+        std::pair<std::vector<double>, cv::Mat> features;
+        Detection detection;
+    protected:
+        friend class MultiTracker;
+        Patch(){};
     };