OpenShot Library | libopenshot 0.5.0
Loading...
Searching...
No Matches
sort.hpp
Go to the documentation of this file.
1// © OpenShot Studios, LLC
2//
3// SPDX-License-Identifier: LGPL-3.0-or-later
4
5#include "KalmanTracker.h"
6#include "Hungarian.h"
7
8#include <iostream>
9#include <fstream>
10#include <iomanip> // to format image names using setw() and setfill()
11#include <set>
12#include <algorithm> // for std::sort
13
14#include "opencv2/video/tracking.hpp"
15#include "opencv2/highgui/highgui.hpp"
16
17#ifndef _OPENCV_KCFTRACKER_HPP_
18#define _OPENCV_KCFTRACKER_HPP_
19#endif
20#pragma once
21
22typedef struct TrackingBox
23{
24 int frame = 0;
25 float confidence = 0;
26 int classId = 0;
27 int id = 0;
28 cv::Rect_<float> box = cv::Rect_<float>(0.0, 0.0, 0.0, 0.0);
30 TrackingBox(int _frame, float _confidence, int _classId, int _id) : frame(_frame), confidence(_confidence), classId(_classId), id(_id) {}
32
34{
35public:
36 // Constructor
37 SortTracker(int max_age = 50, int min_hits = 5, int max_missed = 7, double min_iou = 0.1, double nms_iou_thresh = 0.5, double min_conf = 0.3);
38 // Initialize tracker
39
40 // Update position based on the new frame
41 void update(std::vector<cv::Rect> detection, int frame_count, double image_diagonal, std::vector<float> confidences, std::vector<int> classIds);
42 static double GetIOU(cv::Rect_<float> bb_test, cv::Rect_<float> bb_gt);
43 double GetCentroidsDistance(cv::Rect_<float> bb_test, cv::Rect_<float> bb_gt);
44 std::vector<KalmanTracker> trackers;
45
47
48 std::vector<cv::Rect_<float>> predictedBoxes;
49 std::vector<std::vector<double>> cost_matrix;
50 std::vector<int> assignment;
51 std::set<int> unmatchedDetections;
52 std::set<int> unmatchedTrajectories;
53 std::set<int> allItems;
54 std::set<int> matchedItems;
55 std::vector<cv::Point> matchedPairs;
56
57 std::vector<TrackingBox> frameTrackingResult;
58 std::vector<int> dead_trackers_id;
59
60 unsigned int trkNum = 0;
61 unsigned int detNum = 0;
65 double _min_iou;
67 double _min_conf;
68 unsigned int _next_id;
70};
unsigned int trkNum
Definition sort.hpp:60
double max_centroid_dist_norm
Definition sort.hpp:46
std::vector< int > dead_trackers_id
Definition sort.hpp:58
double _min_iou
Definition sort.hpp:65
std::vector< TrackingBox > frameTrackingResult
Definition sort.hpp:57
std::set< int > unmatchedDetections
Definition sort.hpp:51
std::vector< std::vector< double > > cost_matrix
Definition sort.hpp:49
int _max_age
Definition sort.hpp:63
double _nms_iou_thresh
Definition sort.hpp:66
double _min_conf
Definition sort.hpp:67
std::vector< cv::Point > matchedPairs
Definition sort.hpp:55
double GetCentroidsDistance(cv::Rect_< float > bb_test, cv::Rect_< float > bb_gt)
Definition sort.cpp:35
std::vector< KalmanTracker > trackers
Definition sort.hpp:44
std::vector< cv::Rect_< float > > predictedBoxes
Definition sort.hpp:48
int _min_hits
Definition sort.hpp:62
void update(std::vector< cv::Rect > detection, int frame_count, double image_diagonal, std::vector< float > confidences, std::vector< int > classIds)
Definition sort.cpp:84
std::set< int > allItems
Definition sort.hpp:53
unsigned int detNum
Definition sort.hpp:61
bool alive_tracker
Definition sort.hpp:69
std::vector< int > assignment
Definition sort.hpp:50
std::set< int > matchedItems
Definition sort.hpp:54
std::set< int > unmatchedTrajectories
Definition sort.hpp:52
int _max_missed
Definition sort.hpp:64
unsigned int _next_id
Definition sort.hpp:68
static double GetIOU(cv::Rect_< float > bb_test, cv::Rect_< float > bb_gt)
Definition sort.cpp:23
cv::Rect_< float > box
Definition sort.hpp:28
int frame
Definition sort.hpp:24
TrackingBox()
Definition sort.hpp:29
float confidence
Definition sort.hpp:25
TrackingBox(int _frame, float _confidence, int _classId, int _id)
Definition sort.hpp:30
int classId
Definition sort.hpp:26