Switch branches/tags
Nothing to show
Clone or download
gnebehay Merge pull request #24 from bryant1410/master
Fix broken headings in Markdown files
Latest commit 5209615 Apr 19, 2017
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitignore renamed all function calls from gnebehay to util Feb 13, 2014
CMT.py Speeded up local matching routine Jul 31, 2014
LICENSE Add license file Feb 18, 2014
README.md Fix broken Markdown headings Apr 18, 2017
run.py Fix --help message Jul 15, 2015
util.py assure that tl is the top-left and br is the bottom-right corner Jul 15, 2015



CMT (Consensus-based Matching and Tracking of Keypoints for Object Tracking) is a novel keypoint-based method for long-term model-free object tracking in a combined matching-and-tracking framework. Details can be found on the project page and in our publication. The Python implementation in this repository is platform-independent and runs on Linux, Windows and OS X.


CMT is freely available under the 3-clause BSD license, meaning that you can basically do with the code whatever you want. If you use our algorithm in scientific work, please cite our publication

    author = {Nebehay, Georg and Pflugfelder, Roman},
    booktitle = {Computer Vision and Pattern Recognition},
    month = jun,
    publisher = {IEEE},
    title = {Clustering of {Static-Adaptive} Correspondences for Deformable Object Tracking},
    year = {2015}


  • Python
  • OpenCV-Python (>= 2.4, < 3)
  • NumPy
  • SciPy
  • optional: ipdb (for debugging the code)

Note for Windows users: if you are unable to read video files, please follow this suggestion: http://stackoverflow.com/questions/11699298/opencv-2-4-videocapture-not-working-on-windows


usage: run.py [-h] [--challenge] [--preview] [--no-preview] [--no-scale]
               [--no-rotation] [--bbox BBOX] [--pause] [--output-dir OUTPUT]

Optional arguments

  • inputpath The input path.
  • -h, --help show help message and exit
  • --challenge Enter challenge mode.
  • --preview Force preview
  • --no-preview Disable preview
  • --no-scale Disable scale estimation
  • --with-rotation Enable rotation estimation
  • --bbox BBOX Specify initial bounding box. Format: x,y,w,h
  • --pause Pause after each frame
  • --skip N Skips N frames of the video input
  • --output-dir OUTPUT Specify a directory for output data.
  • --quiet Do not show graphical output (Useful in combination with --output-dir).

Object Selection

Press any key to stop the preview stream. Left click to select the top left bounding box corner and left click again to select the bottom right corner.


When using a webcam, no arguments are necessary:

python run.py

When using a video, the path to the file has to be given as an input parameter:

python run.py /home/cmt/test.avi

It is also possible to specify the initial bounding box on the command line.

python run.py --bbox=123,85,60,140 /home/cmt/test.avi

Use a sequence of numbered image files as an input:

python run.py sequence_dir/{:08d}.jpg

Here, {:08d} is a python format string that is expanded to 00000001.jpg, 00000002.jpg, etc.