Skip to content
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


This repository provides C++ implementations for two correlation filter-based trackers. The code implements modified versions of the visual trackers proposed in [1] and [2]:

  • KCFcpp: This tracker is a C++ port of the Matlab implementation of the kernelized correlation filter (KCF) tracker proposed in [1]. Project webpage: KCFcpp uses as default scale adaption the 1D scale filter proposed in [2]. In addition, a fixed template size, the subpixel/subcell response peak estimation, and the model update from [3] is used as in the KCF version used by Henriques et al. in the VOT challenge 2014 ( The scale adaption used by Henriques et al. in the VOT challenge 2014 is available as option.
  • DSSTcpp: This tracker is a C++ port of the Matlab implementation of the discriminative scale space tracker (DSST) proposed in [2]. The default settings use a fixed template size and the subpixel/cell response peak estimation as in the KCF version. Project webpage:

Both implementations use the FHOG features proposed in [4]. More specifically, the FHOG implementation from [5] is used. Both trackers offer the option to use the target loss detection proposed in [6].



  • C++11
  • OpenCV 3.0
  • CMake
  • SSE2-capable CPU

Compilation has been tested on Windows 7 with Visual Studio 2013 Ultimate, on Windows 8.1 with Visual Studio 2013 Community and on Ubuntu 14.04 with g++.

Windows 7

  • Set environment variables according to OpenCV Setup - Environment Variables
  • Launch cmake-gui, create a build folder and configure.
  • Open CfTracking.sln in Visual Studio and compile the projects DSSTcpp and KCFcpp.

Ubuntu 14.04

  • Install OpenCV 3.0 and CMake.
  • Configure and compile:
mkdir <src-dir>/build
cd <src-dir>/build
cmake ../
make -j 8


  • To track images from a webcam, simply launch DSSTcpp(.exe) or KCFcpp(.exe) and mark an object with a rectangle.
  • To pass a predefined bounding box, use the -b x,y,w,h command line switch. Boxes are expected to use images starting at position 0,0.
  • To track an image sequence or video, copy the contents of <src-dir>/sample/* to your build/release folder and run the batch/sh file. The example launch scripts are brief and explain the trackers' usage. If you run the tracker from Windows cmd, use only one % sign to specify the naming convention of the image sequence.
  • To enable target loss detection, run the tracker with the --para_enable_tracking_loss command line switch.
  • To achieve tracking performance as close to the original Matlab implementations as possible, run the trackers with the --original_version command line switch. While the trackers are implemented closely to their original Matlab implementations, implementation differences do still exist (even with the --original_version switch) and the tracking performance of the C++ implementations may deviate from their original Matlab implementations.
  • To see a full list of available options, run the trackers with --help command line switch.

Commercial Use (US)

The code using linear correlation filters may be affected by a US patent. If you want to use this code commercially in the US please refer to for possible patent claims.


Luka Cehovin: Equalize FHOG performance on AMD and Intel CPUs

3rdparty libraries used:


If you reuse this code for a scientific publication, please cite the related publications (dependent on what parts of the code you reuse):


title = {High-Speed Tracking with Kernelized Correlation Filters},
author = {Henriques, J. F. and Caseiro, R. and Martins, P. and Batista, J.},
journal = {Pattern Analysis and Machine Intelligence, IEEE Transactions on},
year = {2015}


title={Accurate Scale Estimation for Robust Visual Tracking},
author={Danelljan, Martin and H{\"a}ger, Gustav and Khan, Fahad Shahbaz and Felsberg, Michael},
booktitle={Proceedings of the British Machine Vision Conference BMVC},


title={Adaptive Color Attributes for Real-Time Visual Tracking},
author={Danelljan, Martin and Khan, Fahad Shahbaz and Felsberg, Michael and Weijer, Joost van de},
booktitle={Conference on Computer Vision and Pattern Recognition (CVPR)},


title = "Object Detection with Discriminatively Trained Part Based Models",
author = "Felzenszwalb, P. F. and Girshick, R. B. and McAllester, D. and Ramanan, D.",
journal = "IEEE Transactions on Pattern Analysis and Machine Intelligence",
year = "2010", volume = "32", number = "9", pages = "1627--1645"}


author = {Piotr Doll\'ar},
title = {{P}iotr's {C}omputer {V}ision {M}atlab {T}oolbox ({PMT})},
howpublished = {\url{}}}


author={Bolme, David S. and Beveridge, J. Ross and Draper, Bruce A. and Yui Man Lui},
title={Visual Object Tracking using Adaptive Correlation Filters},
booktitle={Conference on Computer Vision and Pattern Recognition (CVPR)},


C++ Implementation of two correlation filter based visual trackers



You can’t perform that action at this time.