GNU/Linux >> Znalost Linux >  >> Linux

Nakonfigurujte a sestavte OpenCV na vlastní instalaci FFMPEG

Je to roky poté, co byla otázka položena, ale nedávno jsem narazil na problémy popsané v této otázce! Rád bych přidal svůj příspěvek.

Za prvé:Postavil jsem pouze statické knihovny ffmpeg (z důvodů), ke kterým je proces sestavení opencv poněkud nepřátelský. Objevily se příspěvky od vývojářů opencv, které uváděly, že nepodporují sestavení opencv proti statickým knihovnám ffmpeg, ale moje myšlenka byla "co když také vytváříte statické knihovny opencv? Určitě by to mělo být podporováno?"

A odpověď je ano , můžete kompilovat statické knihovny opencv proti statickým knihovnám ffmpeg! Udělal jsem to s opencv 4.1.1 proti ffmpeg 4.2. Musel jsem použít následující možnosti cmake:

cmake3 \
-D BUILD_opencv_apps=OFF \
-D BUILD_opencv_python2=OFF \
-D BUILD_SHARED_LIBS=OFF \
-D WITH_FFMPEG=ON \
-D OPENCV_FFMPEG_SKIP_BUILD_CHECK=ON \

Tyto možnosti vedou k sadě statických knihoven opencv, které zahrnují jakékoli statické knihovny ffmpeg, které jste také vytvořili, za předpokladu, že vaše PKG_CONFIG_PATH je nastavena tak, aby tyto knihovny správně nacházela (nebo pokud jste je nainstalovali do nějakého výchozího umístění systému).

Otázka:

  • Proč nemůžeme vytvářet aplikace?
    • Proces sestavení opencv předpokládá, že vytváříte a propojujete sdílené knihovny, i když vytváříte pouze statické knihovny. Zdá se to spíše jako nedostatek v procesu sestavení než jako technické omezení; možná se to jednoho dne napraví.
  • Co je příznak OPENCV_FFMPEG_SKIP_BUILD_CHECK?
    • V procesu cmake ffmpeg existuje krok, kdy je aplikace sestavena a propojena pomocí stejného chybného procesu sestavování jako ostatní aplikace opencv. Je chybný v tom smyslu, že proces předpokládá, že se připojujete proti sdíleným knihovnám, když to není nutné; můžete provést stejné kroky sestavení sami, zatímco ne vytvoření tohoto předpokladu a vytvoření funkční aplikace. Tuto kontrolu sestavení je tedy třeba vypnout, aby opencv akceptovalo, že ano, ve skutečnosti je možné použít jakékoli statické knihovny, které najde. Toto je
  • A proč deaktivujete podporu pythonu?
    • Proces sestavení opencv pythonu explicitně vytváří sdílenou knihovnu, kterou lze načíst pomocí Pythonu.
  • Znamená to, že stále vytváříte sadu testů i se statickými knihovnami?
    • Ano. Ale nezkoušel jsem je spustit

Něco jako

export LD_LIBRARY_PATH=/ffmpeg_install_path/lib/
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/ffmpeg_install_path/lib/pkgconfig
export PKG_CONFIG_LIBDIR=$PKG_CONFIG_LIBDIR:/ffmpeg_install_path/lib/

měl by pracovat. Alespoň to funguje pro OpenCV 2.4.x na mém Ubuntu.


Pro OpenCV 3.x a ffmpeg 3.x musím použít následující patch

diff --git a/cmake/OpenCVFindLibsVideo.cmake b/cmake/OpenCVFindLibsVideo.cmake
index 13b62ac..bab9df3 100644
--- a/cmake/OpenCVFindLibsVideo.cmake
+++ b/cmake/OpenCVFindLibsVideo.cmake
@@ -228,6 +228,12 @@ if(WITH_FFMPEG)
     if(FFMPEG_libavresample_FOUND)
       ocv_append_build_options(FFMPEG FFMPEG_libavresample)
     endif()
+   CHECK_MODULE(libavcodec HAVE_FFMPEG)
+   CHECK_MODULE(libavformat HAVE_FFMPEG)
+   CHECK_MODULE(libavutil HAVE_FFMPEG)
+   CHECK_MODULE(libswscale HAVE_FFMPEG)
+   CHECK_MODULE(libswresample HAVE_FFMPEG)
+   CHECK_MODULE(libavresample HAVE_FFMPEG)
     if(HAVE_FFMPEG)
       try_compile(__VALID_FFMPEG
           "${OpenCV_BINARY_DIR}"

A pomocí následujícího skriptu k sestavení

#!/bin/bash

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/Applications/ffmpeg/lib
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$HOME/Applications/ffmpeg/lib/pkgconfig
export PKG_CONFIG_LIBDIR=$PKG_CONFIG_LIBDIR:$HOME/Applications/ffmpeg/lib

cmake \
    -D BUILD_EXAMPLES=ON \
    -D BUILD_TESTS=OFF \
    -D OPENCV_EXTRA_EXE_LINKER_FLAGS="-Wl,-rpath,$HOME/Applications/ffmpeg/lib" \
    -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=$HOME/Applications/opencv \
    /path/to/opencv

Také při sestavování ffmpeg musím povolit příznaky --enable-avresample .


Linux
  1. Jak nainstalovat a nakonfigurovat VSFTPD

  2. Jak nainstalovat a nakonfigurovat Fail2ban na Ubuntu?

  3. Jak nainstalovat a nakonfigurovat Elasticsearch na Ubuntu 18.04

  1. Jak nainstalovat a nakonfigurovat Postfix

  2. Jak nainstalovat a nakonfigurovat Dovecot

  3. Nainstalujte IIS a nakonfigurujte web

  1. Nainstalujte a nakonfigurujte Git na Ubuntu 16.04

  2. Nainstalujte a nakonfigurujte Fail2ban na Ubuntu 20.04

  3. Nainstalujte a nakonfigurujte Ansible v Linuxu