Face SDK  1.13.0 Mozart release
Face Recognition Software Development Kit
face_sdk_tracker.h
1 
4 #pragma once
5 
6 #include <face_sdk_base/export.h>
7 
9 #include <face_sdk_base/license.h>
10 #include <face_sdk_base/video_stream.h>
11 #include <face_sdk_alignment/alignment.h>
12 #include <face_sdk_face_detector/face_detector.h>
13 #include <face_sdk_tracker/face_recognition.h>
14 #include <face_sdk_tracker/face_sdk_track.h>
15 
16 namespace face_sdk
17 {
28  {
29  public:
30  virtual ~itracker_events() = default;
31 
39  virtual void on_track_appeared(
40  const std::shared_ptr<face_sdk::video_stream> &stream,
41  const std::shared_ptr<face_sdk::track> &track,
42  const std::shared_ptr<face_sdk::video_frame> &frame,
43  const std::shared_ptr<face_sdk::face> &face) = 0;
44 
50  virtual void on_track_disappeared(
51  const std::shared_ptr<face_sdk::video_stream> &stream,
52  const std::shared_ptr<face_sdk::track> &track) = 0;
53 
61  virtual void on_track_updated(
62  const std::shared_ptr<face_sdk::video_stream> &stream,
63  const std::shared_ptr<face_sdk::track> &track,
64  const std::shared_ptr<face_sdk::video_frame> &frame,
65  const std::shared_ptr<face_sdk::face> &face) = 0;
66 
74  virtual void on_track_best_frame(
75  const std::shared_ptr<face_sdk::video_stream> &stream,
76  const std::shared_ptr<face_sdk::track> &track,
77  const std::shared_ptr<face_sdk::video_frame> &frame,
78  const std::shared_ptr<face_sdk::face> &face) = 0;
79 
86  virtual void on_frame_process_error(
87  const face_sdk::exception &exc,
88  const std::shared_ptr<face_sdk::video_stream> &stream,
89  const std::shared_ptr<face_sdk::video_frame> &frame) = 0;
90  };
91 
92 
97  {
98  uint32_t version;
99  std::shared_ptr<itracker_events> events_handler;
100  std::shared_ptr<face_sdk::license> license;
101  std::shared_ptr<face_sdk::face_detector> detector;
102  std::shared_ptr<face_sdk::alignment> alignment;
103  std::shared_ptr<face_sdk::face_recognition> face_recognition;
104  float detector_confidence;
105  uint32_t frame_frequency;
106  float rigid_threshold;
107  uint32_t min_detected_scale;
108  float alpha;
109  uint64_t max_track_length;
110  int32_t compute_device;
111 
112  tracker_config(uint32_t _version,
113  const std::shared_ptr<itracker_events> &_events_handler,
114  const std::shared_ptr<face_sdk::license> &_license,
115  const std::shared_ptr<face_sdk::face_detector> &_detector,
116  const std::shared_ptr<face_sdk::alignment> &_alignment,
117  const std::shared_ptr<face_sdk::face_recognition> &_face_recognition,
118  float _detector_confidence,
119  uint32_t _frame_frequency,
120  float _rigid_threshold,
121  uint32_t _min_detected_scale,
122  float _alpha,
123  uint64_t _max_track_length = 20,
124  int32_t _compute_device = -1
125  )
126  : version(_version)
127  , events_handler(_events_handler)
128  , license(_license)
129  , detector(_detector)
130  , alignment(_alignment)
131  , face_recognition(_face_recognition)
132  , detector_confidence(_detector_confidence)
133  , frame_frequency(_frame_frequency)
134  , rigid_threshold(_rigid_threshold)
135  , min_detected_scale(_min_detected_scale)
136  , alpha(_alpha)
137  , max_track_length(_max_track_length)
138  , compute_device(_compute_device)
139  {}
140  };
141 
157  class tracker
158  {
159  public:
160 
161  virtual ~tracker() = default;
162 
169  virtual std::shared_ptr<face_sdk::video_stream> make_stream(uint32_t stream_id) = 0;
170 
177  virtual void free_stream(const std::shared_ptr<face_sdk::video_stream> &stream) = 0;
178 
183  virtual void commit_frames() noexcept = 0;
184 
187  virtual uint32_t version() const = 0;
188  };
189 
197  std::shared_ptr<tracker> FACE_SDK_EXPORT make_tracker(const tracker_config &config);
198 
200 }
The class is a track of a person. The class contains a vector of face_sdk::track_item.
Definition: face_sdk_track.h:28
std::shared_ptr< tracker > make_tracker(const tracker_config &config)
Makes the face_sdk::tracker object with specified configuration.
virtual std::shared_ptr< face_sdk::video_stream > make_stream(uint32_t stream_id)=0
The function makes a video stream.
virtual void commit_frames() noexcept=0
The function processes all pushed frames. All events will be raised.
virtual void on_track_disappeared(const std::shared_ptr< face_sdk::video_stream > &stream, const std::shared_ptr< face_sdk::track > &track)=0
Raises when a person is lost in the stream.
virtual void on_frame_process_error(const face_sdk::exception &exc, const std::shared_ptr< face_sdk::video_stream > &stream, const std::shared_ptr< face_sdk::video_frame > &frame)=0
Raises when failed to process frame in stream.
virtual void on_track_appeared(const std::shared_ptr< face_sdk::video_stream > &stream, const std::shared_ptr< face_sdk::track > &track, const std::shared_ptr< face_sdk::video_frame > &frame, const std::shared_ptr< face_sdk::face > &face)=0
Raises when a person has appeared in the stream.
Tracker object tracks persons in the video stream and collects faces of the same person in one track...
Definition: face_sdk_tracker.h:157
The face object. Face object contains information about face bounding box on the image and the origin...
Definition: face.h:37
Definition: alignment_info.h:8
virtual void on_track_best_frame(const std::shared_ptr< face_sdk::video_stream > &stream, const std::shared_ptr< face_sdk::track > &track, const std::shared_ptr< face_sdk::video_frame > &frame, const std::shared_ptr< face_sdk::face > &face)=0
Raises when the track object find new best face.
virtual uint32_t version() const =0
Algorithm version. See Face Tracker versions.
virtual void free_stream(const std::shared_ptr< face_sdk::video_stream > &stream)=0
The function releases stream from tracker object.
Base FaceSDK exception class. Almost all exceptions that FaceSDK throws are inherits this class...
Definition: exception.h:56
virtual void on_track_updated(const std::shared_ptr< face_sdk::video_stream > &stream, const std::shared_ptr< face_sdk::track > &track, const std::shared_ptr< face_sdk::video_frame > &frame, const std::shared_ptr< face_sdk::face > &face)=0
Raises when the track object has updated.
The license object. A license object provides information about your limits in face_sdk. See Licensing.
Definition: license.h:26
Alignment operation prepares images for further FIR building and age and gender classification.
Definition: alignment.h:30
Callback-interface for handling tracker events.
Definition: face_sdk_tracker.h:27
Class used by tracker class to get the score of the face.
Definition: face_recognition.h:21
Structure with parameters for the tracker object used in face_sdk::make_tracker() function...
Definition: face_sdk_tracker.h:96