CvTracker C++ lib. Fast cross-platforms video tracking library

€6,000.00

CvTracker C++ library version 9.2.0 compiled for OS Windows x64 (other platforms available by request).

LICENSE: We sell compiled version of this library as is, without future updates and technical support according to perpetual non-exclusive royalty-free license. You pay once and can use this library in your software and hardware products without limits. List of files of the compiled version of the library can be found in programmer’s manual. Please read the license agreement before purchasing: LICENSE. You can buy technical support service for this product.

Add To Cart

CvTracker C++ library version 9.2.0 compiled for OS Windows x64 (other platforms available by request).

LICENSE: We sell compiled version of this library as is, without future updates and technical support according to perpetual non-exclusive royalty-free license. You pay once and can use this library in your software and hardware products without limits. List of files of the compiled version of the library can be found in programmer’s manual. Please read the license agreement before purchasing: LICENSE. You can buy technical support service for this product.

Technical support service
Options:

CvTracker C++ library version 9.2.0 compiled for OS Windows x64 (other platforms available by request).

LICENSE: We sell compiled version of this library as is, without future updates and technical support according to perpetual non-exclusive royalty-free license. You pay once and can use this library in your software and hardware products without limits. List of files of the compiled version of the library can be found in programmer’s manual. Please read the license agreement before purchasing: LICENSE. You can buy technical support service for this product.

Purchase options

You can buy technical support service for this product. Please contact us (info@constantrobotics.com) if you need:

  • Library for specific platform and OS (Windows and Linux supported).

  • Buying by bank transfer for company only. You can by additional technical support.

  • Source code of the library according to LICENSE.

Overview

C++ library CvTracker is intended for automatic object video tracking. The library is written in C++ (C++17 standard) and compatible with any processors and operating systems supporting C++ compiler (C++17 standard) and, optionally CUDA Toolkit for forward and backward FFT operations. The library provides fast calculation, compatibility with low-power processors, high accuracy and contains a lot of additional functions and modes, which allow using it in camera systems of any configuration. It contains an advanced tracking algorithm CSRM developed by ConstantRobotics. The library provides tracking of low-contrast and small-sized objects against a complex background. The library contains a description of the C++ class CvTracker. A single instance of the CvTracker class provides tracking of a single object on video. To track several objects simultaneously, several instances of the CvTracker class must be created. CvTracker library depends on third-party libraries: VTracker interface library (defines programming interface, source code included, Apache 2.0 license) and cuFFT (linked, optional if platform supports CUDA). Additionally demo application depends on third-party libraries: OpenCV open source library (for user interface, linked, version >= 4.5.0, Apache 2.0 license), FormatConverterOpenCv (provides functions to convert pixel formats, source code included) and SimpleFileDialog (file dialog library, source code included, Apache 2.0 license). In the CMake configuration step, the library determines whether CUDA support is available on the device. If CUDA is supported, the library will be compiled using cuFFT. The user can select the computation platform (CPU or GPU) in the library parameters at runtime.

Performance

Processing time per one frame with different parameters. The results have been obtained with benchmark application which process 100 video frames and calculate average processing time per frame:

  • NXP IMX8M Plus. Search window size 256x256: 1 color channel (e.g. thermal cameras, 1 CPU core usage) - 13 msec (~76 fps), 3 color channels (3 CPU cores usage) - 20 msec (~50 fps). Search window size 128x128: 1 color channel - 3 msec (~333 fps), 3 color channels - 4 msec (~250 fps).

  • Jetson Nano. Search window size 256x256: 1 color channel (e.g. thermal cameras, 1 CPU core usage) - 8 msec (~125 fps), 3 color channels (3 CPU cores usage) - 11 msec (~90 fps). Search window size 128x128: 1 color channel - 1.7 msec (~588 fps), 3 color channels - 2.2 msec (~454 fps).

  • Jetson Orin NX. Search window size 256x256 (CPU only): 1 color channel (e.g. thermal cameras, 1 CPU core usage) - 2.1 msec (~476 fps), 3 color channels (3 CPU cores usage) - 2.4 msec (~416 fps). Search window size 128x128 (CPU only): 1 color channel - 0.6 msec (~1666 fps), 3 color channels - 0.7 msec (~1428 fps). Search window size 256x256 (GPU for FFT, less CPU usage): 1 color channel (e.g. thermal cameras) - 4.1 msec (~243 fps), 3 color channels (3 CPU cores usage) - 4.7 msec (~400 fps). Search window size 128x128 (GPU for FFT, less CPU usage): 1 color channel - 2 msec (~500 fps), 3 color channels - 2.5 msec (~1428 fps).

  • Raspberry Pi Zero 2W. Search window size 256x256: 1 color channel (e.g. thermal cameras, 1 CPU core usage) - 20.5 msec (~48 fps), 3 color channels (3 CPU cores usage) - 34.7 msec (~28 fps). Search window size 128x128: 1 color channel - 4.8 msec (~208 fps), 3 color channels - 6.5 msec (~153 fps).

  • Raspberry Pi 4B. Search window size 256x256: 1 color channel (e.g. thermal cameras, 1 CPU core usage) - 7.1 msec (~140 fps), 3 color channels (3 CPU cores usage) - 14.4 msec (~69 fps). Search window size 128x128: 1 color channel - 1.3 msec (~769 fps), 3 color channels - 2.7 msec (~370 fps).

  • Raspberry Pi 5. Search window size 256x256: 1 color channel (e.g. thermal cameras, 1 CPU core usage) - 2.3 msec (~434 fps), 3 color channels (3 CPU cores usage) - 5.7 msec (~175 fps). Search window size 128x128: 1 color channel - 0.5 msec (~2000 fps), 3 color channels - 0.7 msec (~1428 fps).

Demo video

Downloads

Programmer’s manual: DOWNLOAD

Demo application to test on your video (Windows x64): DOWNLOAD

Benchmark applications and demo libraries (time restricted) available by request for platforms: NXP IMX8, Jetson Nano, Jetson Orin, Raspberry Zero 2W, 4B, 5 and others.

Simple interface

class CvTracker : public VTracker
{
public:

    /// Get string of the library version.
    static std::string getVersion();

    /// Class constructor.
    CvTracker();

    /// Class destructor.
    ~CvTracker();

    /// Init video tracker. All params will be set.
    bool initVTracker(VTrackerParams& params) override;

    /// Set video tracker param.
    bool setParam(VTrackerParam id, float value) override;

    /// Get video tracker parameter value.
    float getParam(VTrackerParam id) override;

    /// Get video tracker params (results).
    void getParams(VTrackerParams& params) override;

    /// Execute command.
    bool executeCommand(VTrackerCommand id,
                        float arg1 = 0,
                        float arg2 = 0,
                        float arg3 = 0) override;

    /// Process frame. Must be used for each input video frame.
    bool processFrame(cr::video::Frame& frame) override;

    /// Get image of internal surfaces.
    void getImage(int type, cr::video::Frame& image) override;

    /// Decode and execute command.
    bool decodeAndExecuteCommand(uint8_t* data, int size) override;
};
VStabiliserOpenCv C++ lib. Fast cross-platform video stabilisation library
€4,000.00