#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;
+ // 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(){};
};