Getting Started - Building the library

From RidgeRun Developer Wiki








Dependencies

The RidgeRun Video Stabilization Library has the following dependencies for building from source:

Compulsory

A C++ compiler compatible with C++-17.

If GNUCompiler should be installed, we recommend the GNU Compiler >= 9.x.

Moreover, we use the meson building system. You can install it using:

# Install PIP
sudo apt install python3 python3-pip
# Install ninja
sudo apt install ninja-build pkg-config
# Install meson
sudo pip3 install meson

Semi-Optional

The RidgeRun Video Stabilization Library is built on top of three different backends: OpenCV, OpenCL and CUDA. One of the three must exist in the system. If you are on a Debian-based system, you can install these dependencies using:

OpenCV: For all platforms for CPU execution.

sudo apt install libopencv-core* libopencv-highgui* libopencv-imgproc* libopencv-imgcodecs* libopencv-dev

OpenCL: For non-NVIDIA platforms.

sudo apt install opencl-headers

It may depend on your system

CUDA: For NVIDIA-based platforms (in progress).

sudo apt install cuda-toolkit-*

Optional

For documentation, development and plotting, you can install the following dependencies:

# For documentation
sudo apt install doxygen graphviz
# For plotting
sudo apt install libboost-filesystem-dev libboost-system-dev libboost-iostreams-dev
# For development
pip3 install pre-commit
sudo apt install clang-format cpp-check

In the following sections, you can see how to install the dependencies mentioned before.

GStreamer Support

The RidgeRun Video Stabilization GStreamer element depends on GStreamer Video. You can install it by:

sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-base libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-bad

Building the project

Once the dependencies have been, you can run a default compilation with the following:

# When using docs
git submodule update --init

meson build --optimization 3 --prefix /usr -Denable-docs=disabled -Ddeveloper-mode=false

ninja -C build

sudo ninja -C build install

For additional customization, you may refer to the following table of options:

`
Configure Option Description Values Default
-Ddeveloper-mode Enable developer mode true, false true
-Denable-docs Enable the documentation generation disabled, enabled enabled
-Denable-eval Enable the evaluation system. disabled, enabled disabled
-Denable-tests Enable the compilation of the tests. disabled, enabled enabled
-Denable-examples Enable the compilation of the examples. disabled, enabled enabled
-Denable-plots Enable the compilation of the plotter. disabled, enabled enabled
-Denable-opencv Enable the OpenCV backend compilation (CPU processing) disabled, enabled enabled
-Denable-opencl Enable the OpenCL backend compilation (GPU processing) disabled, enabled enabled
-Denable-cuda Enable the CUDA backend compilation (GPU processing) disabled, enabled enabled
-Denable-gstreamer Enable the GStreamer plug-in disabled, enabled enabled
--prefix /usr Set the installation path of the library PATH /usr/local
--optimization 3 Set the optimization level to the maximum 0, 1, 2, 3 0
Table 1. RidgeRun Video Stabilization Library configuration options (Meson)

Note: If the dependency is not found, it will skip the compilation, and a message will be shown during the construction.

Testing the project

You can test the final construction results of the library using the test suite:

ninja -C builddir test

Moreover, if the examples were enabled, you can run them as well: Examples Guidebook

Using the library for your app

A simple application without options, can be compiled using:

g++ -o app app.cpp $(pkg-config rvs --cflags --libs)

where app.cpp is the app to compile and uses the RidgeRun Video Stabilization Library.

You can use pkg-config with the package name of rvs. The library has to be installed previously.