KalmanTracker.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. //
  2. // Created by lqx on 20-4-23.
  3. //
  4. #ifndef TRACK_SORT_KALMANTRACKER_H
  5. #define TRACK_SORT_KALMANTRACKER_H
  6. ///////////////////////////////////////////////////////////////////////////////
  7. // KalmanTracker.h: KalmanTracker Class Declaration
  8. #include "opencv2/video/tracking.hpp"
  9. #include "opencv2/highgui/highgui.hpp"
  10. using namespace std;
  11. using namespace cv;
  12. #define StateType Rect_<float>
  13. // This class represents the internel state of individual tracked objects observed as bounding box.
  14. class KalmanTracker
  15. {
  16. public:
  17. KalmanTracker()
  18. {
  19. init_kf(StateType());
  20. m_time_since_update = 0;
  21. m_hits = 0;
  22. m_hit_streak = 0;
  23. m_age = 0;
  24. m_id = kf_count;
  25. //kf_count++;
  26. }
  27. KalmanTracker(StateType initRect)
  28. {
  29. init_kf(initRect);
  30. m_time_since_update = 0;
  31. m_hits = 0;
  32. m_hit_streak = 0;
  33. m_age = 0;
  34. m_id = kf_count;
  35. //kf_count++;
  36. }
  37. KalmanTracker(StateType initRect, int classId,float prob)
  38. {
  39. init_kf(initRect);
  40. m_time_since_update = 0;
  41. m_hits = 0;
  42. m_hit_streak = 0;
  43. m_age = 0;
  44. m_id = kf_count;
  45. kf_count++;
  46. m_class_id = classId;
  47. m_prob = prob;
  48. }
  49. ~KalmanTracker()
  50. {
  51. m_history.clear();
  52. m_class_history.clear();
  53. }
  54. StateType predict();
  55. void update(StateType stateMat,int classId, float prob);
  56. StateType get_state();
  57. StateType get_rect_xysr(float cx, float cy, float s, float r);
  58. static int kf_count;
  59. int m_time_since_update;
  60. int m_hits;
  61. int m_hit_streak;
  62. int m_age;
  63. int m_id;
  64. int m_class_id;
  65. std::vector<int> m_class_history;
  66. float m_prob;
  67. private:
  68. void init_kf(StateType stateMat);
  69. cv::KalmanFilter kf;
  70. cv::Mat measurement;
  71. std::vector<StateType> m_history;
  72. };
  73. #endif //TRACK_SORT_KALMANTRACKER_H