Ubuntu 18.04ソースコードコンパイルインストールOpenCV 4.0手順【セルフ】


インストール環境

  • OS:Ubuntu 18.04 64 bit
  • グラフィックス:NVidia RTX 2080 Ti
  • CUDA:10.1
  • cnDNN:7.5
  • cmake: 3.10.2

  • ターゲット

  • ソースコードコンパイルインストールOpenCV 3.4.5
  • インストール依存

    $ sudo apt install -y build-essential cmake git pkg-config libgtk2.0-dev libopenexr-dev 
    $ sudo apt install -y gfortran libblas-dev liblapack-dev libeigen3-dev 
    $ sudo apt install -y python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev
    $ sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
    $ sudo apt update
    $ sudo apt install libjasper1 libjasper-dev 
    $ sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
    $ sudo apt install -y libavcodec-dev libavformat-dev libswscale-dev libavutil-dev libavresample-dev libxvidcore-dev libx264-dev libv4l-dev
    

    ソースのダウンロード

  • ダウンロード3.4.5バージョンopencvとopencv_contribソース圧縮パッケージ.
  • は、2つの圧縮パケットのファイル名が同じであるため、それぞれopencvと改名する.zipとopencv_contrib.zipを、同じフォルダに解凍します.
  • $ unzip opencv.zip
    $ unzip opencv_contrib.zip
    

    事前準備

  • ippicv_をダウンロード2019_lnx_intel64_general_20180723.tgz、あるフォルダに置く:ダウンロードアドレス、パスワード:1 miu.
  • opencv-3.4.5/3 rdparty/ippicv/ippicvを開く.cmake、
  • "https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}ippicv/"
    

    次のように変更
    file:{$  1       }
    
  • {$opencv-3.4.5の経路}/modules/stitching/src/precomp.hppの91行目のopencv 2/xfeatures 2 d/cuda.hppは{$opencv_contrib-3.4.5の経路}/modules/xfeatures 2 d/include/opencv 2/xfeatures 2 d/cudaに変更する.hpp.
  • {$opencv-3.4.5の経路}/modules/stitching/include/opencv 2/stitching/detail/matchers.hppの52行目のopencv 2/xfeatures 2 d/cuda.hppは{$opencv_contrib-3.4.5の経路}/modules/xfeatures 2 d/include/opencv 2/xfeatures 2 d/cudaに変更する.hpp.
  • 後続makeのときに似たようなファイルが見つからないエラーがある場合は、手順3と4の方法を参照してください.

  • コンパイルコード

  • 解凍されたopencvディレクトリに入り、buildディレクトリを作成し、必要に応じてcmakeパラメータを構成して実行し、make、最後にmake installします.
  • 必要に応じてコンパイルするモジュールを構成し、以下の例を示す:
  • $ cd opencv
    $ mkdir build
    $ cd build
    $ cmake -D CMAKE_BUILD_TYPE=RELEASE \
        -D CMAKE_INSTALL_PREFIX=/usr/local \
        -D INSTALL_PYTHON_EXAMPLES=ON \
        -D INSTALL_C_EXAMPLES=OFF \
        -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.4.5/modules \
        -D PYTHON3_EXECUTABLE=~/.virtualenvs/{$      }/bin/python\  #          python
        -D BUILD_EXAMPLES=ON ..
    $ make
    $ sudo make install
    $ sudo ldconfig
    
  • python 2リンクの作成:
  • $ cd ~/.virtualenvs/cv2/lib/python2.7/site-packages/
    $ ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so
    
  • python 3リンクの作成:
  • $ cd /usr/local/lib/python3.6/site-packages/cv2/python-3.6/
    $ sudo mv cv2.cpython-36m-x86_64-linux-gnu.so cv2.so
    $ cd ~/.virtualenvs/cv/lib/python3.6/site-packages/
    $ ln -s /usr/local/lib/python3.5/site-packages/cv2/python-3.6/cv2.so cv2.so
    

    インストールの確認

  • バージョンの表示:
  • $ python
    Python 3.6.9 (default, Apr 18 2020, 01:56:04)
    [GCC 8.4.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import cv2
    >>> cv2.__version__
    '3.4.5'
    

    エラー

  • sudo ldconfig時に次のエラーが発生した場合:
  • /sbin/ldconfig.real: /usr/local/cuda-10.1/targets/x86_64-linux/lib/libcudnn.so.7 is not a symbolic link
    
  • ソリューション:
  • $ cd /usr/local/cuda/lib64
    $ ls -lha libcudnn*
    -rwxr-xr-x 3 root root 333M Jan 27 17:06 libcudnn.so
    -rwxr-xr-x 3 root root 333M Jan 27 17:06 libcudnn.so.7
    -rwxr-xr-x 3 root root 333M Jan 27 17:06 libcudnn.so.7.5.0
    -rw-r--r-- 1 root root 331M Jan 27 17:06 libcudnn_static.a
    $ sudo cp libcudnn.so libcudnn.so.bk
    $ sudo cp libcudnn.so.7 libcudnn.so.7.bk
    $ sudo rm libcudnn.so
    $ sudo rm libcudnn.so.7
    $ sudo ln -sf libcudnn.so.7.5.0 libcudnn.so.7
    $ sudo ln -sf libcudnn.so.7 libcudnn.so
    $ sudo ldconfig