]> rtime.felk.cvut.cz Git - hercules2020/kcf.git/blobdiff - src/kcf.h
Do not allocate and free temporary matrices for every frame
[hercules2020/kcf.git] / src / kcf.h
index 99719e9bf086927baa5d74d1f97412e73e662644..349083b03aeb80ec2761858a6a20ca111da1d9e0 100644 (file)
--- a/src/kcf.h
+++ b/src/kcf.h
@@ -119,6 +119,7 @@ private:
     Kcf_Tracker_Private &d;
 
     class Model {
+        cv::Size feature_size;
         uint height, width, n_feats;
     public:
         ComplexMat yf {height, width, 1};
@@ -128,7 +129,17 @@ private:
         ComplexMat model_xf {height, width, n_feats};
         ComplexMat xf {height, width, n_feats};
 
-        Model(cv::Size freq_size, uint _n_feats) : height(freq_size.height), width(freq_size.width), n_feats(_n_feats) {}
+        // Temporary variables for trainig
+        MatScaleFeats patch_feats{1, n_feats, feature_size};
+        MatScaleFeats temp{1, n_feats, feature_size};
+
+
+
+        Model(cv::Size feature_size, uint _n_feats)
+            : feature_size(feature_size)
+            , height(Fft::freq_size(feature_size).height)
+            , width(Fft::freq_size(feature_size).width)
+            , n_feats(_n_feats) {}
     };
 
     std::unique_ptr<Model> model;
@@ -151,7 +162,6 @@ private:
         MatScales k;
     };
 
-
     //helping functions
     void scale_track(ThreadCtx &vars, cv::Mat &input_rgb, cv::Mat &input_gray);
     cv::Mat get_subwindow(const cv::Mat &input, int cx, int cy, int size_x, int size_y) const;