upgrade opencv to 3.3.1, complete patch similarity
[trackerpp.git] / include / Engine.h
1 #ifndef _ENGINE_H_
2 #define _ENGINE_H_
3
4 #include<string>
5 #include<sstream>
6 #include<set>
7 #include "Tracker.h"
8 #include "Detector.h"
9 #include "MultiTracker.h"
10 #include "VideoReader.h"
11 #include "SharedPtr.h"
12
13 namespace suanzi{
14
15 class EngineObserver;
16
17 TK_DECLARE_PTR(Engine);
18
19 class Engine
20 {
21 public:
22     static EnginePtr create();
23     void destroy();
24     virtual ~Engine();
25
26     virtual void start();
27     void addObserver(EngineObserver* o);
28     void setVideoSrc(VideoSrcType type, const std::string& url);
29
30 private:
31     Engine();
32     void run();
33     DetectorPtr detector;
34     MultiTrackerPtr multiTracker;
35     std::set<EngineObserver *> observer_list;
36     //std::string videoSrc;
37     VideoReaderPtr reader;
38 };
39
40 struct Person
41 {
42     typedef enum {
43         Male,
44         Female
45     } Gender;
46
47     typedef enum {
48         Kid,        // < 10
49         Teenager,   // 12 ~ 19
50         Adult_2,    // 20 - 30
51         Adult_3,    // 30 - 40
52         Adult_4,    // 40 - 50
53         Adult_5,    // 50 - 60
54         Elder       // > 60
55     } Ages;
56
57     unsigned long id = 0x001;
58     Gender gender = Female;
59     Ages age = Kid;
60
61     std::string ageToString (Ages age){
62         switch (age){
63         case Kid: return "Kid";
64         case Teenager: return "Teenager";
65         default: return "no";
66         }
67     }
68
69     std::string toString(){
70         std::stringstream ss;
71         ss << "Person: id=" << id << ". Gender:" << (gender == Gender::Male ? "Male" : "Female" ) <<
72             ". Age: " << ageToString(age);
73         return ss.str();
74     }
75 };
76
77 class EngineObserver
78 {
79 public:
80     //virtual void onPersonIn(std::set<Person> persons) = 0;
81     virtual void onPersonIn(Person& p) = 0;
82     virtual void onPersonOut(Person& p) = 0;
83 };
84
85 } // namespace suanzi
86
87 #endif /* _ENGINE_H_ */