Yolo-Detection/yoloSORT/kalmanboxtracker.h

74 lines
1.1 KiB
C++

#pragma once
#include <iostream>
#include <opencv2/opencv.hpp>
/**
* @brief KalmanBoxTracker 卡尔曼跟踪器
*/
class KalmanBoxTracker
{
public:
/**
* @brief KalmanBoxTracker 卡尔曼跟踪器类构造函数
* @param bbox 检测框
*/
KalmanBoxTracker(std::vector<int> bbox);
/**
* @brief update 通过观测的检测框更新系统状态
* @param bbox 检测框
*/
void update(std::vector<int> bbox);
/**
* @brief predict 估计预测的边界框
*/
std::vector<float> predict();
/**
* @brief get_state 返回当前检测框状态
*/
std::vector<float> get_state();
public:
/**
* @param m_kf 卡尔曼滤波器
*/
cv::KalmanFilter* m_kf;
/**
* @param m_time_since_update 从更新开始的时间(帧数)
*/
int m_time_since_update;
/**
* @param count 卡尔曼跟踪器的个数
*/
static int count;
/**
* @param m_id 卡尔曼跟踪器的id
*/
int m_id;
/**
* @param m_history 历史检测框的储存
*/
std::vector<std::vector<float>> m_history;
/**
* @param m_hits
*/
int m_hits;
/**
* @param m_hit_streak 忽略目标初始的若干帧
*/
int m_hit_streak;
/**
* @param m_age predict被调用的次数计数
*/
int m_age;
};