Compile and install OpenCV 4.5.5 with Gstreamer and FFmpeg support for C3V codec in the C3V Ubuntu environment

Compile and install OpenCV 4.5.5 with Gstreamer and FFmpeg support for C3V codec in the C3V Ubuntu environment

Before do this action, you need finish Gstreamer and FFmpeg source code compile flow as below link.

Compile and install Gstreamer 1.22.9 for C3V codec in C3V Ubuntu environment - C3V Documentation - Confluence

Compile and install FFmpeg 4.4.4 for C3V codec in the C3V Ubuntu environment - C3V Documentation - Confluence

1. Install the building package

sudo apt update sudo apt install build-essential cmake git pkg-config libgtk-3-dev libcairo2-dev sudo apt install libjpeg-dev libpng-dev libtiff-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev sudo apt install libxvidcore-dev libx264-dev sudo apt install libeigen3-dev sudo apt install python3-dev python3-numpy python3-testresources

2. Get OpenCV 4.5.5 source

cd ~/code git clone https://github.com/opencv/opencv.git cd opencv git checkout -b 4.5.5 4.5.5 cd ~/code git clone https://github.com/opencv/opencv_contrib.git cd opencv_contrib git checkout -b 4.5.5 4.5.5

3. Edit a compile cmake script file “cv_cmake_dnn.sh” and save it in ~/code/opencv

ROOT=/home/sunplus/code CV_SRC=$ROOT/opencv CV_BUILD=$ROOT/opencv/build # ffmpeg-4.4.4 FFMEG_DIR=$ROOT/install-ffmpeg FFMEG_PKG_CFG=$FFMEG_DIR/lib/pkgconfig FFMEG_LIB=$FFMEG_DIR/lib FFMEG_INC=$FFMEG_DIR/include # GLIB2 directories GLIB2_DIR=/usr GLIB2_PKG_CFG=$GLIB2_DIR/lib/aarch64-linux-gnu/pkgconfig GLIB2_LIB=$GLIB2_DIR/lib/aarch64-linux-gnu GLIB2_INC=$GLIB2_DIR/include/glib-2.0:$GLIB2_DIR/lib/aarch64-linux-gnu/glib-2.0/include # gstreamer directories GST_DIR=$ROOT/install-gstreamer GST_PKG_CFG=$GST_DIR/lib/aarch64-linux-gnu/pkgconfig GST_LIB=$GST_DIR/lib/aarch64-linux-gnu/gstreamer-1.0 GST_INC=$GST_DIR/include/gstreamer-1.0 # extern export PKG_CONFIG_PATH=$GLIB2_PKG_CFG:$GST_PKG_CFG:$FFMEG_PKG_CFG:/usr/lib/aarch64-linux-gnu/pkgconfig:$PKG_CONFIG_PATH export LD_LIBRARY_PATH=$FFMEG_LIB:$GLIB2_LIB:$GST_LIB:$LD_LIBRARY_PATH echo "PKG_CONFIG_PATH=$PKG_CONFIG_PATH" echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH" # cmake options CMAKE_INSTALL_PREFIX=$ROOT/install-opencv CMAKE_PREFIX_PATH=$FFMEG_DIR:$GLIB2_DIR:$GST_DIR CMAKE_TOOLCHAIN_FILE=$CV_SRC/platforms/linux/aarch64-gnu.toolchain.cmake echo "CMAKE_INSTALL_PREFIX=$CMAKE_INSTALL_PREFIX" echo "CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH" echo "CMAKE_TOOLCHAIN_FILE=$CMAKE_TOOLCHAIN_FILE" PY_INSTALL=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") PY_EXE=$(which python3) PY_INC=$(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") PY_LIB=$(python3 -c "import distutils.sysconfig as sysconfig; print(sysconfig.get_config_var('LIBDIR'))")/libpython3.so NP_INC=$(python3 -c "import numpy; print(numpy.get_include())") NP_VER=$(python3 -c "import numpy; print(numpy.__version__)") echo "PY_INSTALL=$PY_INSTALL" echo "PY_EXE=$PY_EXE" echo "PY_INC=$PY_INC" echo "PY_LIB=$PY_LIB" echo "NP_INC=$NP_INC" echo "NP_VER=$NP_VER" pkg-config --modversion gtk+-3.0 #3.24.20 pkg-config --modversion gstreamer-1.0 #1.22.9 mkdir -p $CV_BUILD cd $CV_BUILD cmake -D CMAKE_BUILD_TYPE=Release \ -D OPENCV_EXTRA_MODULES_PATH=$ROOT/opencv_contrib/modules \ -D WITH_GSTREAMER=ON \ -D WITH_GTK=ON \ -D WITH_V4L=ON \ -D WITH_FFMPEG=ON \ -D BUILD_opencv_dnn=ON \ -D BUILD_EXAMPLES=OFF \ -D OPENCV_ENABLE_NONFREE=ON \ -D WITH_OPENGL=ON \ -D WITH_TBB=ON \ -D BUILD_TESTS=OFF \ -D BUILD_PERF_TESTS=OFF \ -D OPENCV_GENERATE_PKGCONFIG=ON \ -D CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH \ -D PKG_CONFIG_PATH=$PKG_CONFIG_PATH \ -D GSTREAMER_INCLUDE_DIRS=$GST_INC \ -D GSTREAMER_LIBRARIES=$GST_LIB \ -D FFMPEG_INCLUDE_DIRS=$FFMEG_INC \ -D FFMPEG_LIBRARIES=$FFMEG_LIB \ -D BUILD_opencv_python2=OFF \ -D BUILD_opencv_python3=ON \ -D OPENCV_PYTHON3_INSTALL_PATH=$PY_INSTALL \ -D PYTHON3_EXECUTABLE=$PY_EXE \ -D PYTHON3_INCLUDE_DIR=$PY_INC \ -D PYTHON3_LIBRARY=$PY_LIB \ -D PYTHON3_NUMPY_INCLUDE_DIRS=$NP_INC \ -D PYTHON3_NUMPY_VERSION=$NP_VER \ $CV_SRC

4. Use compile cmake script file “cv_cmake_dnn.sh” to generate make confiuration

cd ~/code/opencv bash cv_cmake_dnn.sh

5. Compile and install opencv

cd build make -j4 sudo make install

6. Test

python3 -c "import cv2; print(cv2.__version__)"
image-20241225-060950.png

7. Add link path

Because opencv library is installed in /usr/local/lib, it needs to set this path to system dynamic link path.

echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/opencv.conf sudo ldconfig

Verify link path.

ldconfig -p | grep opencv
image-20241225-061307.png