]> rtime.felk.cvut.cz Git - hercules2020/kcf.git/blobdiff - main_trax.cpp
Get rid of DynMem memory leaks
[hercules2020/kcf.git] / main_trax.cpp
index 4ffb24ecf8cba341087d74b4e7c1f555e18fac0b..4c31df92802435ef966b580b1505263bf325916e 100644 (file)
@@ -1,6 +1,7 @@
 #include <stdlib.h>
 
 #include <trax/opencv.hpp>
+#include <memory>
 #include "kcf.h"
 
 int main()
@@ -8,43 +9,42 @@ int main()
     trax::Image img;
     trax::Region reg;
 
-    KCF_Tracker tracker;
+    std::unique_ptr<KCF_Tracker> tracker;
     cv::Mat image;
-       cv::Rect rectangle;
+    cv::Rect rectangle;
 
-    trax::Server handle(trax::Configuration(TRAX_IMAGE_PATH | TRAX_IMAGE_MEMORY | TRAX_IMAGE_BUFFER, TRAX_REGION_RECTANGLE), trax_no_log);
-
-       std::cout << handle.configuration().format_region << " " << TRAX_SUPPORTS(handle.configuration().format_region, TRAX_REGION_POLYGON) << std::endl;
-
-    while(true)
-    {
+    trax::Server handle(trax::Metadata(TRAX_REGION_RECTANGLE, TRAX_IMAGE_PATH), trax_no_log);
 
+    while (true) {
         trax::Properties prop;
-
         int tr = handle.wait(img, reg, prop);
 
-         if (tr == TRAX_INITIALIZE) {
+        if (tr == TRAX_INITIALIZE) {
+            //create new tracker
+            tracker.reset(new KCF_Tracker());
 
             rectangle = trax::region_to_rect(reg);
             image = trax::image_to_mat(img);
 
             // Dynamically configure tracker
-            tracker.m_use_scale = prop.get("use_scale", true);
-            tracker.m_use_color = prop.get("use_color", true);
-            tracker.m_use_subpixel_localization = prop.get("use_subpixel_localization", true);
-            tracker.m_use_subgrid_scale = prop.get("use_subgrid_scale", true);
-            tracker.m_use_multithreading = prop.get("use_multithreading", true);
-            tracker.m_use_cnfeat = prop.get("use_cnfeat", true);
+            tracker->m_use_scale = prop.get("use_scale", true);
+            tracker->m_use_color = prop.get("use_color", true);
+            tracker->m_use_subpixel_localization = prop.get("use_subpixel_localization", true);
+            tracker->m_use_subgrid_scale = prop.get("use_subgrid_scale", true);
+            tracker->m_use_multithreading = prop.get("use_multithreading", true);
+            tracker->m_use_cnfeat = prop.get("use_cnfeat", true);
+            tracker->m_use_linearkernel = prop.get("use_linearkernel", false);
 
-                       tracker.init(image, rectangle);
+            tracker->init(image, rectangle);
 
         } else if (tr == TRAX_FRAME) {
 
             image = trax::image_to_mat(img);
-                       tracker.track(image);
-                       BBox_c bb = tracker.getBBox();
-                       rectangle = bb.get_rect();
-
+            if (tracker) {
+                tracker->track(image);
+                BBox_c bb = tracker->getBBox();
+                rectangle = bb.get_rect();
+            }
         } else {
             break;
         }