GNU/Linux >> Belajar Linux >  >> Linux

Konfigurasikan dan Bangun OpenCV ke Instal FFMPEG Kustom

Sudah bertahun-tahun setelah pertanyaan diajukan, tetapi saya baru-baru ini menemukan jenis masalah yang dijelaskan dalam pertanyaan ini! Saya ingin menambahkan masukan saya.

Pertama:Saya hanya membangun pustaka ffmpeg statis (karena alasan), yang agak dimusuhi oleh proses pembangunan opencv. Ada posting oleh pengembang opencv yang menyatakan bahwa mereka tidak mendukung build opencv terhadap pustaka ffmpeg statis, tetapi pemikiran saya adalah "bagaimana jika Anda juga membuat pustaka opencv statis? Tentu saja itu harus didukung?"

Dan jawabannya adalah ya , Anda dapat mengkompilasi pustaka opencv statis terhadap pustaka ffmpeg statis! Saya melakukan ini dengan opencv 4.1.1 melawan ffmpeg 4.2. Saya harus menggunakan opsi cmake berikut:

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 \

Opsi ini menghasilkan sekumpulan pustaka statis opencv yang menyertakan pustaka statis ffmpeg apa pun yang telah Anda buat, dengan asumsi PKG_CONFIG_PATH Anda disetel untuk menemukan pustaka tersebut dengan benar (atau jika Anda telah memasangnya ke beberapa lokasi sistem default).

Tanya Jawab:

  • Mengapa kami tidak dapat membuat aplikasi?
    • Proses build opencv mengasumsikan bahwa Anda sedang membangun dan menautkan ke pustaka bersama, bahkan jika Anda hanya membangun pustaka statis. Ini sepertinya kekurangan dalam proses pembuatan daripada batasan teknis; mungkin suatu hari ini akan diperbaiki.
  • Apa bendera OPENCV_FFMPEG_SKIP_BUILD_CHECK?
    • Ada langkah dalam proses cmake ffmpeg di mana aplikasi dibuat dan ditautkan menggunakan proses pembuatan yang salah sama seperti aplikasi opencv lainnya. Itu salah dalam arti bahwa prosesnya mengasumsikan bahwa Anda menautkan ke perpustakaan bersama ketika tidak perlu; Anda dapat melakukan sendiri langkah-langkah pembangunan yang sama sementara tidak membuat asumsi itu dan membuat aplikasi yang berfungsi. Oleh karena itu, pemeriksaan build ini perlu dimatikan agar opencv dapat menerima bahwa ya, sebenarnya, pustaka statis apa pun yang ditemukan boleh digunakan. Ini
  • Dan mengapa Anda menonaktifkan dukungan python?
    • Proses build opencv python secara eksplisit menghasilkan pustaka bersama yang dapat dimuat oleh Python.
  • Apakah ini menyiratkan bahwa Anda masih membuat rangkaian pengujian bahkan dengan pustaka statis?
    • Ya. Tapi saya belum mencoba menjalankannya

Sesuatu seperti

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/

harus bekerja. Setidaknya ini berfungsi untuk OpenCV 2.4.x di Ubuntu saya.


Untuk OpenCV 3.x dan ffmpeg 3.x, saya harus menerapkan tambalan berikut

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}"

Dan dengan skrip berikut untuk dibuat

#!/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

Juga, ketika membangun ffmpeg, saya harus mengaktifkan flag --enable-avresample .


Linux
  1. Cara menginstal dan mengkonfigurasi VSFTPD

  2. Instal IIS dan konfigurasikan situs web

  3. Cara menginstal dan mengkonfigurasi Elasticsearch di Ubuntu 18.04

  1. Cara menginstal dan mengkonfigurasi Postfix

  2. Cara menginstal dan mengkonfigurasi Dovecot

  3. Bagaimana Cara Menginstal dan Mengonfigurasi Fail2ban di Ubuntu?

  1. Instal dan Konfigurasi Git di Ubuntu 16.04

  2. Instal dan Konfigurasi Fail2ban di Ubuntu 20.04

  3. Instal Dan Konfigurasikan Ansible Di Linux