Reference implementation of the Visual Tracking eXchange protocol.
Switch branches/tags
Nothing to show
Clone or download
Latest commit 49d8d2d Jun 16, 2018

Visual Tracking eXchange protocol

Download AppVeyor build status Documentation Status

What is TraX protocol?

Visual Tracking eXchange protocol is a simple protocol that enables easier evaluation of computer vision tracking algorithms. The basic idea is that a tracker communicates with the evaluation software using a set of text commands over the (standard) input/output streams or TCP sockets.

Reference server and client implementation

libtrax is a reference implementation of the Tracking eXchange protocol written in plain C. It enables researchers to quickly add support for the protocol in their C or C++ tracker (servers) as well as write new clients (evaluation, various tools).

Integration examples are provided in the trackers directory. A simple static tracker is available that explains the basic concept of the integration without too much tracker-specific details.

Other languages


C library also comes with a C++ wrapper that provides easier interaction in C++ code by exposing object-oriented API and automatic memory handling via reference counting.


It is technically not possible to have a Matlab-only implementation of TraX protocol on all platforms because of the way Matlab handles terminal input and output. Therefore, Matlab TraX implementation is available as a MEX function that links the C library. It is available in the matlab directory. In case of using Matlab on Windows, the only way to use TraX is to use TCP/IP sockets, which means that both the client and server have to explicitly enable this (see help of traxclient for more details).


Besides being able to use C library directly from Python, there is also a pure Python implementation of the server available in the python directory. An example of a tracker is available in the trackers directory.

Support utilities

The repositoy also contains utilities that make ceratin frequent tasks easier:

  • Client library: a C++ library for writing client software, managing tracker process, also provides a CLI client executable.
  • OpenCV utilities: conversions between TraX library structures and OpenCV objects.


Documentation for the protocol and libraries is available on ReadTheDocs.


If you are using TraX protocol in your research, please cite the following publication that describes the protocol and the library.

    author = {{\v{C}}ehovin, Luka},
    doi = {},
    issn = {0925-2312},
    journal = {Neurocomputing},
    title = {{TraX: The visual Tracking eXchange Protocol and Library}},
    year = {2017}


trax is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

trax is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with trax. If not, see