]> rtime.felk.cvut.cz Git - hercules2020/kcf.git/blob - main_trax.cpp
Merge branch 'lukacu-master'
[hercules2020/kcf.git] / main_trax.cpp
1 #include <stdlib.h>
2
3 #include <trax/opencv.hpp>
4 #include <memory>
5 #include "kcf.h"
6
7 int main()
8 {
9     trax::Image img;
10     trax::Region reg;
11
12     std::unique_ptr<KCF_Tracker> tracker;
13     cv::Mat image;
14     cv::Rect rectangle;
15
16     trax::Server handle(trax::Configuration(TRAX_IMAGE_PATH | TRAX_IMAGE_MEMORY | TRAX_IMAGE_BUFFER, TRAX_REGION_RECTANGLE), trax_no_log);
17
18     std::cout << handle.configuration().format_region << " " << TRAX_SUPPORTS(handle.configuration().format_region, TRAX_REGION_POLYGON) << std::endl;
19
20     while (true) {
21         trax::Properties prop;
22         int tr = handle.wait(img, reg, prop);
23
24         if (tr == TRAX_INITIALIZE) {
25             //create new tracker
26             tracker.reset(new KCF_Tracker());
27
28             rectangle = trax::region_to_rect(reg);
29             image = trax::image_to_mat(img);
30
31             // Dynamically configure tracker
32             tracker->m_use_scale = prop.get("use_scale", true);
33             tracker->m_use_color = prop.get("use_color", true);
34             tracker->m_use_subpixel_localization = prop.get("use_subpixel_localization", true);
35             tracker->m_use_subgrid_scale = prop.get("use_subgrid_scale", true);
36             tracker->m_use_multithreading = prop.get("use_multithreading", true);
37             tracker->m_use_cnfeat = prop.get("use_cnfeat", true);
38
39             tracker->init(image, rectangle);
40
41         } else if (tr == TRAX_FRAME) {
42
43             image = trax::image_to_mat(img);
44             if (tracker) {
45                 tracker->track(image);
46                 BBox_c bb = tracker->getBBox();
47                 rectangle = bb.get_rect();
48             }
49         } else {
50             break;
51         }
52
53         trax::Region status = trax::rect_to_region(rectangle);
54         handle.reply(status, trax::Properties());
55
56     }
57
58     return EXIT_SUCCESS;
59 }