Multiple Object Tracker, Based on Hungarian algorithm + Kalman filter.
C++
2,422
1,140 commits
updated Sep 3, 2026
-e=3 example-e=3 example-e=3 example-e=3 example-e=3 exampleAvailable through CreateDetector function with different detectorType:
tracking::Motion_VIBE), SuBSENSE (tracking::Motion_SuBSENSE), LOBSTER (tracking::Motion_LOBSTER)tracking::Motion_MOG2)tracking::Motion_MOG), GMG (tracking::Motion_GMG), CNT (tracking::Motion_CNT)cv::RotatedRecttracking::DNN_OCV)tracking::Yolo_TensorRT)For solving assignment problems:
tracking::MatchHungrian) - O(N³) complexitytracking::MatchBipart) - O(M*N²) complexitytracking::DistCenters)tracking::DistRects)tracking::DistJaccard)tracking::KalmanLinear) and Unscented (tracking::KalmanUnscented)tracking::FilterCenter) and position+size (tracking::FilterRect)When targets disappear:
tracking::TrackKCF)tracking::TrackCSRT)tracking::TrackDaSiamRPN)tracking::TrackVit)tracking::TrackNano)SyncProcess): Single-threaded processingAsyncProcess): Decouples detection and trackinggit clone https://github.com/Smorodov/Multitarget-tracker.git
cd Multitarget-tracker
mkdir build && cd build
cmake . .. \
-DUSE_OCV_BGFG=ON \
-DUSE_OCV_KCF=ON \
-DUSE_OCV_UKF=ON \
-DBUILD_ONNX_TENSORRT=ON \
-DBUILD_ASYNC_DETECTOR=ON \
-DBUILD_CARS_COUNTING=ON
make -j
Basic command syntax:
./MultitargetTracker <video_path> [--example=<num>] [--start_frame=<num>]
[--end_frame=<num>] [--end_delay=<ms>] [--out=<filename>]
[--show_logs] [--gpu] [--async] [--res=<filename>]
[--settings=<filename>] [--batch_size=<num>]
Example:
./MultitargetTracker ../data/atrium.avi -e=1 -o=../data/atrium_motion.avi
Keyboard Controls:
m: Toggle play/pauseEsc: Exit#include <mtracking/Ctracker.h>
std::unique_ptr<BaseTracker> m_tracker;
TrackerSettings settings;
settings.SetDistance(tracking::DistJaccard);
m_tracker = BaseTracker::CreateTracker(settings);
83 followers · starred Dec 2018
415 followers · starred Dec 2020
23 followers · starred Feb 2024
13 followers · starred Dec 2022
Multiple Object Tracker, Based on Hungarian algorithm + Kalman filter.
C++
2,422
1,140 commits
updated Sep 3, 2026
-e=3 example-e=3 example-e=3 example-e=3 example-e=3 exampleAvailable through CreateDetector function with different detectorType:
tracking::Motion_VIBE), SuBSENSE (tracking::Motion_SuBSENSE), LOBSTER (tracking::Motion_LOBSTER)tracking::Motion_MOG2)tracking::Motion_MOG), GMG (tracking::Motion_GMG), CNT (tracking::Motion_CNT)cv::RotatedRecttracking::DNN_OCV)tracking::Yolo_TensorRT)For solving assignment problems:
tracking::MatchHungrian) - O(N³) complexitytracking::MatchBipart) - O(M*N²) complexitytracking::DistCenters)tracking::DistRects)tracking::DistJaccard)tracking::KalmanLinear) and Unscented (tracking::KalmanUnscented)tracking::FilterCenter) and position+size (tracking::FilterRect)When targets disappear:
tracking::TrackKCF)tracking::TrackCSRT)tracking::TrackDaSiamRPN)tracking::TrackVit)tracking::TrackNano)SyncProcess): Single-threaded processingAsyncProcess): Decouples detection and trackinggit clone https://github.com/Smorodov/Multitarget-tracker.git
cd Multitarget-tracker
mkdir build && cd build
cmake . .. \
-DUSE_OCV_BGFG=ON \
-DUSE_OCV_KCF=ON \
-DUSE_OCV_UKF=ON \
-DBUILD_ONNX_TENSORRT=ON \
-DBUILD_ASYNC_DETECTOR=ON \
-DBUILD_CARS_COUNTING=ON
make -j
Basic command syntax:
./MultitargetTracker <video_path> [--example=<num>] [--start_frame=<num>]
[--end_frame=<num>] [--end_delay=<ms>] [--out=<filename>]
[--show_logs] [--gpu] [--async] [--res=<filename>]
[--settings=<filename>] [--batch_size=<num>]
Example:
./MultitargetTracker ../data/atrium.avi -e=1 -o=../data/atrium_motion.avi
Keyboard Controls:
m: Toggle play/pauseEsc: Exit#include <mtracking/Ctracker.h>
std::unique_ptr<BaseTracker> m_tracker;
TrackerSettings settings;
settings.SetDistance(tracking::DistJaccard);
m_tracker = BaseTracker::CreateTracker(settings);
83 followers · starred Dec 2018
415 followers · starred Dec 2020
23 followers · starred Feb 2024
13 followers · starred Dec 2022