detection_based_tracker.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #if defined(__linux__) || defined(LINUX) || defined(__APPLE__) || defined(ANDROID)
4 
5 #include <opencv2/core/core.hpp>
7 
8 #include <vector>
9 
11 {
12  public:
13  struct Parameters
14  {
17  double scaleFactor;
20  int minDetectionPeriod; //the minimal time between run of the big object detector (on the whole frame) in ms (1000 mean 1 sec), default=0
21 
22  Parameters();
23  };
24 
25  DetectionBasedTracker(const std::string& cascadeFilename, const Parameters& params);
26  virtual ~DetectionBasedTracker();
27 
28  virtual bool run();
29  virtual void stop();
30  virtual void resetTracking();
31 
32  virtual void process(const cv::Mat& imageGray);
33 
34  bool setParameters(const Parameters& params);
35  const Parameters& getParameters();
36 
37 
38  typedef std::pair<cv::Rect, int> Object;
39  virtual void getObjects(std::vector<cv::Rect>& result) const;
40  virtual void getObjects(std::vector<Object>& result) const;
41 
42  protected:
43  class SeparateDetectionWork;
45  friend void* workcycleObjectDetectorFunction(void* p);
46 
47 
49  {
54 
58 
60  };
63 
65  {
66  typedef std::vector<cv::Rect> PositionsVector;
67 
69 
72  int id;
73 
75  {
76  lastPositions.push_back(rect);
77  id=getNextId();
78  };
79 
80  static int getNextId()
81  {
82  static int _id=0;
83  return _id++;
84  }
85  };
86 
88  std::vector<TrackedObject> trackedObjects;
89 
90  std::vector<float> weightsPositionsSmoothing;
91  std::vector<float> weightsSizesSmoothing;
92 
94 
95 
96  void updateTrackedObjects(const std::vector<cv::Rect>& detectedObjects);
98  void detectInRegion(const cv::Mat& img, const cv::Rect& r, std::vector<cv::Rect>& detectedObjectsInRegions);
99 };
100 
101 namespace cv
102 {
103  using ::DetectionBasedTracker;
104 } //end of cv namespace
105 
106 #endif
GLdouble GLdouble GLdouble r
std::vector< cv::Rect > PositionsVector
Definition: detection_based_tracker.hpp:66
Definition: objdetect.hpp:385
cv::Rect calcTrackedObjectPositionToShow(int i) const
int numLastPositionsToTrack
Definition: detection_based_tracker.hpp:50
int numDetectedFrames
Definition: detection_based_tracker.hpp:70
int id
Definition: detection_based_tracker.hpp:72
int numStepsToWaitBeforeFirstShow
Definition: detection_based_tracker.hpp:51
float coeffTrackingWindowSize
Definition: detection_based_tracker.hpp:55
double scaleFactor
Definition: detection_based_tracker.hpp:17
int numStepsToShowWithoutDetecting
Definition: detection_based_tracker.hpp:53
int numStepsToTrackWithoutDetectingIfObjectHasNotBeenShown
Definition: detection_based_tracker.hpp:52
const Parameters & getParameters()
bool setParameters(const Parameters &params)
int minNeighbors
Definition: detection_based_tracker.hpp:19
std::pair< cv::Rect, int > Object
Definition: detection_based_tracker.hpp:38
TrackedObject(const cv::Rect &rect)
Definition: detection_based_tracker.hpp:74
Definition: detection_based_tracker.hpp:13
int maxObjectSize
Definition: detection_based_tracker.hpp:16
float coeffObjectSizeToTrack
Definition: detection_based_tracker.hpp:56
std::vector< TrackedObject > trackedObjects
Definition: detection_based_tracker.hpp:88
CvRect rect
Definition: core_c.h:100
virtual void getObjects(std::vector< cv::Rect > &result) const
const CvArr const CvArr CvArr * result
Definition: core_c.h:805
virtual void resetTracking()
int minDetectionPeriod
Definition: detection_based_tracker.hpp:20
GLint GLvoid * img
Definition: legacy.hpp:1150
int minObjectSize
Definition: detection_based_tracker.hpp:15
friend void * workcycleObjectDetectorFunction(void *p)
std::vector< float > weightsPositionsSmoothing
Definition: detection_based_tracker.hpp:90
virtual ~DetectionBasedTracker()
InnerParameters innerParameters
Definition: detection_based_tracker.hpp:62
std::vector< float > weightsSizesSmoothing
Definition: detection_based_tracker.hpp:91
int numTrackedSteps
Definition: detection_based_tracker.hpp:87
The Core Functionality.
The n-dimensional matrix class.
Definition: core.hpp:1688
Parameters parameters
Definition: detection_based_tracker.hpp:61
PositionsVector lastPositions
Definition: detection_based_tracker.hpp:68
GLfloat GLfloat p
GLenum const GLfloat * params
Definition: compat.hpp:688
cv::Ptr< SeparateDetectionWork > separateDetectionWork
Definition: detection_based_tracker.hpp:43
cv::CascadeClassifier cascadeForTracking
Definition: detection_based_tracker.hpp:93
DetectionBasedTracker(const std::string &cascadeFilename, const Parameters &params)
virtual void process(const cv::Mat &imageGray)
Definition: detection_based_tracker.hpp:48
void detectInRegion(const cv::Mat &img, const cv::Rect &r, std::vector< cv::Rect > &detectedObjectsInRegions)
int maxTrackLifetime
Definition: detection_based_tracker.hpp:18
Definition: detection_based_tracker.hpp:10
float coeffObjectSpeedUsingInPrediction
Definition: detection_based_tracker.hpp:57
virtual void stop()
void updateTrackedObjects(const std::vector< cv::Rect > &detectedObjects)
Definition: detection_based_tracker.hpp:64
virtual bool run()
int numFramesNotDetected
Definition: detection_based_tracker.hpp:71
static int getNextId()
Definition: detection_based_tracker.hpp:80