123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- //
- // 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_<float>
- // 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<int> m_class_history;
- float m_prob;
- private:
- void init_kf(StateType stateMat);
- cv::KalmanFilter kf;
- cv::Mat measurement;
- std::vector<StateType> m_history;
- };
- #endif //TRACK_SORT_KALMANTRACKER_H
|