forked from Smorodov/Multitarget-tracker
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCtracker.h
More file actions
93 lines (79 loc) · 2.22 KB
/
Ctracker.h
File metadata and controls
93 lines (79 loc) · 2.22 KB
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
#pragma once
#include <iostream>
#include <vector>
#include <memory>
#include <array>
#include <deque>
#include <map>
#include <set>
#include "defines.h"
#include "track.h"
#include "ShortPathCalculator.h"
#include "EmbeddingsCalculator.hpp"
#include "TrackerSettings.h"
// ----------------------------------------------------------------------
///
/// \brief The CTracker class
///
class CTracker
{
public:
CTracker(const TrackerSettings& settings);
CTracker(const CTracker&) = delete;
CTracker(CTracker&&) = delete;
CTracker& operator=(const CTracker&) = delete;
CTracker& operator=(CTracker&&) = delete;
~CTracker(void);
void Update(const regions_t& regions, cv::UMat currFrame, float fps);
///
/// \brief CanGrayFrameToTrack
/// \return
///
bool CanGrayFrameToTrack() const
{
bool needColor = (m_settings.m_lostTrackType == tracking::LostTrackType::TrackGOTURN) ||
(m_settings.m_lostTrackType == tracking::LostTrackType::TrackDAT) ||
(m_settings.m_lostTrackType == tracking::LostTrackType::TrackSTAPLE) ||
(m_settings.m_lostTrackType == tracking::LostTrackType::TrackLDES);
return !needColor;
}
///
/// \brief CanColorFrameToTrack
/// \return
///
bool CanColorFrameToTrack() const
{
return true;
}
///
/// \brief GetTracksCount
/// \return
///
size_t GetTracksCount() const
{
return m_tracks.size();
}
///
/// \brief GetTracks
/// \return
///
void GetTracks(std::vector<TrackingObject>& tracks) const
{
tracks.clear();
if (m_tracks.size() > tracks.capacity())
tracks.reserve(m_tracks.size());
for (const auto& track : m_tracks)
{
tracks.emplace_back(track->ConstructObject());
}
}
private:
TrackerSettings m_settings;
tracks_t m_tracks;
size_t m_nextTrackID;
cv::UMat m_prevFrame;
std::unique_ptr<ShortPathCalculator> m_SPCalculator;
std::map<objtype_t, std::shared_ptr<EmbeddingsCalculator>> m_embCalculators;
void CreateDistaceMatrix(const regions_t& regions, std::vector<RegionEmbedding>& regionEmbeddings, distMatrix_t& costMatrix, track_t maxPossibleCost, track_t& maxCost, cv::UMat currFrame);
void UpdateTrackingState(const regions_t& regions, cv::UMat currFrame, float fps);
};