-
Notifications
You must be signed in to change notification settings - Fork 0
/
track.h
94 lines (76 loc) · 1.66 KB
/
track.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#ifndef TRACKING_H
#define TRACKING_H
#include <QObject>
#include "vehicledetector.h"
#include <vector>
#include <string>
#include <numeric>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
#include <fstream>
#include <iomanip> // to format image names using setw() and setfill()
#include <unistd.h>.
#include <set>
#include "opencv2/video/tracking.hpp"
#include "Hungarian.h"
#include "KalmanTracker.h"
using namespace std;
using namespace cv;
#define StateType Rect_<float>
typedef struct TrackBox
{
int frame;
int id;
Rect_<float> box;
}TrackBox;
class Track
{
public:
/**
* @brief Track
*/
Track();
/**
* @brief IOU
* @param box1
* @param box2
* @return
*/
float IOU(Rect_<float> box1, Rect_<float> box2);
/**
* @brief GetIOU
* @param box1
* @param box2
* @return
*/
float GetIOU(Rect_<float> box1, Rect_<float> box2);
/**
* @brief Trackbox
* @param bboxes
* @return
*/
vector<TrackBox> Trackbox(vector<cv::Rect> bboxes);
private:
vector<TrackBox> detData;
int max_age = 10;
int min_hits = 1;
unsigned int trkNum = 0;
unsigned int detNum = 0;
double iouThreshold = 0.2; //0.3
vector<KalmanTracker> trackers;
KalmanTracker kf_count ; //0
vector<Rect_<float>> predictedBoxes;
vector<vector<double>> iouMatrix;
vector<int> assignment;
set<int> unmatchedDetections;
set<int> unmatchedTrajectories;
set<int> allItems;
set<int> matchedItems;
vector<cv::Point> matchedPairs;
vector<TrackBox> frameTrackResult;
vector<vector<TrackBox>> detFrameData;
Rect_<float> box1, box2;
};
#endif // TRACKING_H