Imagem do Docker com OpenCV e FFPMEG

1

Estou criando uma imagem do Docker que ativa OpenCV com ffmpeg support.

Meu Dockerfile parece

  RUN apt-get update && apt-get install -y \
        git \
        curl \
        wget \
        unzip \
        ffmpeg \
        build-essential \
        cmake git pkg-config libswscale-dev \
        libtbb2 libtbb-dev libjpeg-dev \
        libpng-dev libtiff-dev libjasper-dev \
        python3-numpy

    RUN cd \
        && wget https://github.com/opencv/opencv/archive/3.1.0.zip \
        && unzip 3.1.0.zip \
        && cd opencv-3.1.0 \
        && mkdir build \
        && cd build \
        && cmake -D CMAKE_BUILD_TYPE=RELEASE \
            -D CMAKE_INSTALL_PREFIX=/usr/local \
            -D WITH_CUDA=OFF \
            -D INSTALL_C_EXAMPLES=OFF  \
            -D INSTALL_PYTHON_EXAMPLES=OFF \
            -D WITH_FFMPEG=ON \
            -D BUILD_NEW_PYTHON_SUPPORT=ON \
            -D WITH_TBB=ON .. \
        && make -j"$(nproc)"  \
        && make install \
        && cd \
        && rm 3.1.0.zip

Quando eu construo meu contêiner ffmpeg está instalado, mas OpenCV não o detecta, como posso ver claramente na configuração geral:

--   Video I/O:
--     DC1394 1.x:                  NO
--     DC1394 2.x:                  NO
--     FFMPEG:                      NO
--       codec:                     NO
--       format:                    NO
--       util:                      YES (ver 54.31.100)
--       swscale:                   YES (ver 3.1.101)
--       resample:                  NO
--       gentoo-style:              YES
--     GStreamer:                   NO
--     OpenNI:                      NO
--     OpenNI PrimeSensor Modules:  NO
--     OpenNI2:                     NO
--     PvAPI:                       NO
--     GigEVisionSDK:               NO
--     UniCap:                      NO
--     UniCap ucil:                 NO
--     V4L/V4L2:                    NO/YES
--     XIMEA:                       NO
--     Xine:                        NO

mesmo se o ffpmeg for instalado

ffmpeg version 2.8.11-0ubuntu0.16.04.1 Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
  configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
    
por loretoparisi 12.04.2017 / 21:52

1 resposta

1

O pacote ffmpeg binário é para a ferramenta de linha de comando ffmpeg . Os cabeçalhos de desenvolvimento que você precisa compilar estão em pacotes diferentes - um número razoável. Felizmente, todos eles vêm do pacote ffmpeg source , para que você possa ter uma lista relativamente fácil:

No Stretch, que usa o ffmpeg real:

(stretch)$ grep-aptavail -s Package -F Source ffmpeg | grep -- '-dev$'
Package: libavcodec-dev
Package: libavdevice-dev
Package: libavfilter-dev
Package: libavformat-dev
Package: libavresample-dev
Package: libavutil-dev
Package: libpostproc-dev
Package: libswresample-dev
Package: libswscale-dev
Package: libffmpegthumbnailer-dev

ou no Jessie, onde o Debian usou o fork do libav:

(jessie)$ grep-aptavail -s Package -F Source libav | grep -- '-dev$'
Package: libavcodec-dev
Package: libavdevice-dev
Package: libavfilter-dev
Package: libavformat-dev
Package: libavresample-dev
Package: libavutil-dev
Package: libswscale-dev
Package: libavc1394-dev
Package: libavl-dev

Eu não tenho uma caixa do Ubuntu para verificar.

Note como as coisas particulares do OpenCV estão dizendo "sim" / "não" para combinar com esses nomes de bibliotecas.

    
por 12.04.2017 / 22:33