#ifndef SORT_H_ #define SORT_H_ #include "KalmanBoxTracker.h" #include "HungarianAlgorithm.h" #include #include #include #include #include #include #include "../CD.h" #include "TrafficStatistics.h" using namespace std; using namespace cv; #define LOSTMAXFRAMECCOUNT 5 //by zl #define SNAPSHOTFRAMECOUNT 24 //下标从0开始 取第十帧为快照帧 struct TrackerResult { vector< vector > trackers_box; vector< vector< vector > > trackers_history; }; typedef struct mylist { vector listinfo; int lost; //丢失的帧数 >LOSTMAXFRAMECCOUNT 则认为彻底丢失目标 long id; bool isupdate; bool istraffic; int index;// 行人类别 int num; // 该ID序列下的第num帧 20170306 从0开始计数 int startframe; //轨迹开始帧 int endframe; //轨迹结束帧 }mylist; class Sort { public: //Sort(); int updateLastFrame(vector &deleteTrackers); Sort(VPT_Line *m_line = NULL, int m_linecount = 0, int m_detectType = 0); int update(int width, int height, bool isUseDet, vector< vector > &dets, CD_ObjInfo *result, vector &deleteTrackers, VPT_TrafficResult* traffic = NULL, int detectType = 0); void Release(); void ReSet(); void Pause(); bool GetState(); int addTracker(Mat *img); public: vector trackers; int max_age; int min_hits; int frame_count; int trackcount; //---------------------添加快照保存策略-----------------------// //vector snapshots; private: int linecount; int detectType; TrafficStatistics *mTrafficStatistics; vector lineArray; vector trafficArray; //统计流量 bool istraffic; //by zl 是否统计交通量 //vector tracker; bool WORK; int detectObjCount; private: void associate_detections_to_trackers(vector< vector > &matched, vector &unmatched_dets, vector &unmatched_trks, vector< vector > &dets, vector< vector > &trks, float iou_threshold = 0.3); //int addTracker(VPT_ObjInfo *result, int resultcount); int Traffic(); }; //辅助函数 void RectboundCheck(int Width, int Height, CD_ObjInfo * result); //防止坐标越界 by zl #endif