RidgeRun Video Stabilization Library/Getting Started/Building the Library: Difference between revisions

From RidgeRun Developer Wiki
(Created page with "<noinclude> {{RidgeRun Video Stabilization Library/Head|previous=Getting Started/Getting the Code|next=API Reference|metakeywords=imu,stabilizer,rb5,jetson,nvidia,xilinx,amd,qualcomm}} </noinclude> {{DISPLAYTITLE:Getting Started - Building the library|noerror}} <noinclude> {{RidgeRun Video Stabilization Library/Foot|Getting Started/Getting the Code|API Reference}} </noinclude>")
 
 
(12 intermediate revisions by the same user not shown)
Line 5: Line 5:
{{DISPLAYTITLE:Getting Started - Building the library|noerror}}
{{DISPLAYTITLE:Getting Started - Building the library|noerror}}


== 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:
<syntaxhighlight lang=bash>
# Install PIP
sudo apt install python3 python3-pip
# Install ninja
sudo apt install ninja-build pkg-config
# Install meson
sudo pip3 install meson
</syntaxhighlight>
=== 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.
<syntaxhighlight lang=bash>
sudo apt install libopencv-core* libopencv-highgui* libopencv-imgproc* libopencv-imgcodecs* libopencv-dev
</syntaxhighlight>
'''OpenCL''': For non-NVIDIA platforms.
<syntaxhighlight lang=bash>
sudo apt install opencl-headers
</syntaxhighlight>
''It may depend on your system''
'''CUDA''': For NVIDIA-based platforms (in progress).
<syntaxhighlight lang=bash>
sudo apt install cuda-toolkit-*
</syntaxhighlight>
=== Optional ===
For documentation, development and plotting, you can install the following dependencies:
<syntaxhighlight lang=bash>
# 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
</syntaxhighlight>
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:
<syntaxhighlight lang=bash>
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-base libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-bad
</syntaxhighlight>
== Building the project ==
Once the dependencies have been, you can run a default compilation with the following:
<syntaxhighlight lang=bash>
# 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
</syntaxhighlight>
For additional customization, you may refer to the following table of options:
<center>`
{| class="wikitable"
|-
! 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
|}
<b>Table 1.</b> RidgeRun Video Stabilization Library configuration options (Meson)</caption>
</center>
''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:
<syntaxhighlight lang=bash>
ninja -C builddir test
</syntaxhighlight>
Moreover, if the examples were enabled, you can run them as well: [[RidgeRun Video Stabilization Library/API Reference/Examples Guidebook|Examples Guidebook]]
== Using the library for your app ==
A simple application without options, can be compiled using:
<syntaxhighlight lang=bash>
g++ -o app app.cpp $(pkg-config rvs --cflags --libs)
</syntaxhighlight>
where app.cpp is the app to compile and uses the RidgeRun Video Stabilization Library.
You can use <code>pkg-config</code> with the package name of <code>rvs</code>. The library has to be installed previously.


<noinclude>
<noinclude>
{{RidgeRun Video Stabilization Library/Foot|Getting Started/Getting the Code|API Reference}}
{{RidgeRun Video Stabilization Library/Foot|previous=Getting Started/Getting the Code|next=API Reference}}
</noinclude>
</noinclude>

Latest revision as of 20:42, 16 September 2024








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.