// // Created by lqx on 20-4-23. // #ifndef TRACK_SORT_KALMANTRACKER_H #define TRACK_SORT_KALMANTRACKER_H /////////////////////////////////////////////////////////////////////////////// // KalmanTracker.h: KalmanTracker Class Declaration #include "opencv2/video/tracking.hpp" #include "opencv2/highgui/highgui.hpp" using namespace std; using namespace cv; #define StateType Rect_ // This class represents the internel state of individual tracked objects observed as bounding box. class KalmanTracker { public: KalmanTracker() { init_kf(StateType()); m_time_since_update = 0; m_hits = 0; m_hit_streak = 0; m_age = 0; m_id = kf_count; //kf_count++; } KalmanTracker(StateType initRect) { init_kf(initRect); m_time_since_update = 0; m_hits = 0; m_hit_streak = 0; m_age = 0; m_id = kf_count; //kf_count++; } KalmanTracker(StateType initRect, int classId,float prob) { init_kf(initRect); m_time_since_update = 0; m_hits = 0; m_hit_streak = 0; m_age = 0; m_id = kf_count; kf_count++; m_class_id = classId; m_prob = prob; } ~KalmanTracker() { m_history.clear(); m_class_history.clear(); } StateType predict(); void update(StateType stateMat,int classId, float prob); StateType get_state(); StateType get_rect_xysr(float cx, float cy, float s, float r); static int kf_count; int m_time_since_update; int m_hits; int m_hit_streak; int m_age; int m_id; int m_class_id; std::vector m_class_history; float m_prob; private: void init_kf(StateType stateMat); cv::KalmanFilter kf; cv::Mat measurement; std::vector m_history; }; #endif //TRACK_SORT_KALMANTRACKER_H