トップページインストール,使い方Ubuntu, WSL2OpenCV, OpenCV Contrib 最新版のインストール,CUDA 対応可能(ソースコードを使用)(Ubuntu 上)

OpenCV, OpenCV Contrib 最新版のインストール,CUDA 対応可能(ソースコードを使用)(Ubuntu 上)

Ubuntu で,OpenCV 最新版をソースコードからビルドして,インストールする手順をスクリーンショット等で説明する.

ユースケース.OpenCVは「apt install opencv-dev」で簡単にインストールできるが,OpenCV の最新版を追いかけたい場合.自分の環境にあわせてビルドしたい(NVidia CUDA を使うなど)場合は,ソースコードからビルドする.

目次

  1. 前準備
  2. Ubuntu で OpenCV のビルドとインストール(OpenCV サイトから最新版をダウンロード)

OpenCV は,実時間コンピュータビジョン (real time computer vision) の アルゴリズムと文書とサンプルコードの集まり.

【サイト内の OpenCV 関連ページ】

【OpenCV の公式情報】

前準備

Ubuntu のシステム更新

Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行.

Ubuntu のインストールは別ページで説明している

sudo apt -y update
sudo apt -yV upgrade
sudo /sbin/shutdown -r now

C/C++ コンパイラー,make,パッケージツール,qt5-qmake のインストール

端末で,次のコマンドを実行.

sudo apt -y install build-essential gcc g++ make libtool texinfo dpkg-dev pkg-config
sudo apt -y install qt5-qmake

NVIDIA ドライバ,NVIDIA CUDA ツールキット 11.7, NVIDIA cuDNN 8.4.1 のインストールのインストール(Ubuntu 上)

Ubuntu での NVIDIA ドライバ,NVIDIA CUDA ツールキット 11.7, NVIDIA cuDNN 8.4.1 のインストール: 別ページで説明している.

Git, cmake, curl のインストール(Ubuntu 上)

インストールするには,端末で,次のコマンドを実行.

sudo apt -y install git cmake cmake-curses-gui cmake-gui curl

Python3 開発用ファイル,pip, setuptools, venv のインストール(Ubuntu 上)

Python のインストールは行わない(Ubuntu のシステム Python を用いる.)

Python, pip のコマンドでの起動のまとめ.

Ubuntu のシステム Python を用いるとき, python, pip は,次のコマンドで起動できる.

Ubuntu での Python 開発環境(JupyterLab, spyder, nteract)のインストール: 別ページで説明している.

Python3 開発用ファイル,pip, setuptools, venv のインストール

端末で,次のコマンドを実行.

sudo apt -y update
sudo apt -y install python-is-python3 python3-dev python3-pip python3-setuptools python3-venv

Intel Performance ライブラリのインストール

Intel Performance ライブラリを使いたいときは,インストールしておく (必ずしもインストールする必要はない)

Inter Performance ライブラリのインストールは,別ページで説明している.

Ubuntu で OpenCV のビルドとインストール

  1. 前提ソフトウェア類

    端末で,次のコマンドを実行.

    sudo apt -y build-dep libopencv-dev
    sudo apt -y install openalpr openalpr-utils libopenalpr-dev
    sudo apt -y install openni2-utils libopenni2-dev
    sudo apt -y install libpcl-dev
    sudo apt -y install libguava-java
    sudo apt -y install python3-dev pylint3 flake8 python3-flake8
    sudo apt -y install libjasper-dev libleveldb-dev liblmdb-dev 
    sudo apt -y install libatlas-base-dev libopenblas-dev liblapack-dev libtbb-dev libeigen3-dev
    
  2. ソースコードのダウンロードと cmake の実行

    端末で,次のコマンドを実行. 「/usr/local/cuda-11.7」のところは,NVIDIA CUDA ツールキット をインストールしたディレクトリに読み替えること.

    NVIDIA ドライバ (https://www.nvidia.com/download/index.aspx), NVIDIA CUDA ツールキット 11.7,NVIDIA cuDNN 8.2 のインストール: 別ページで説明している.

    Intel MKL を使いたいときは「-DUSE_MKL=ON」に設定する.このとき, 「/opt/intel/compilers_and_libraries_2020.0.166/linux/mkl/include」のところは,Intel MKL の mkl.h があるディレクトリに読み替えること.Intel MKL のインストールのインストールは,別ページで説明している.

      cd /usr/local
      sudo rm -rf opencv
      sudo git clone https://github.com/opencv/opencv.git
      sudo chown -R ${USER} /usr/local/opencv
      cd /usr/local
      sudo rm -rf opencv_contrib
      sudo git clone https://github.com/opencv/opencv_contrib.git
      sudo chown -R ${USER} /usr/local/opencv_contrib
      cd /usr/local/opencv
      sudo rm -rf build
      sudo mkdir build
      sudo chown -R ${USER} /usr/local/opencv/build
      cd build
      CUDA_PATH="/usr/local/cuda-11.7" CFLAGS="-I/usr/local/cuda-11.7/include -I/opt/intel/compilers_and_libraries/linux/mkl/include" LDFLAGS="-L/usr/local/cuda-11.7/lib64" \
      cmake -D CMAKE_BUILD_TYPE=RELEASE \
      -D CMAKE_INSTALL_PREFIX=/usr/local \
      -D BUILD_opencv_world=ON \
      -D OPENCV_EXTRA_MODULES_PATH=/usr/local/opencv_contrib/modules \
      -D OpenBLAS_INCLUDE_DIR=/usr/include/x86_64-linux-gnu \
        -D OpenBLAS_LIB=/usr/lib/x86_64-linux-gnu/libopenblas.so \
      -D INSTALL_TESTS=ON \
      -D INSTALL_C_EXAMPLES=ON \
      -D WITH_PYTHON=ON \
      -D INSTALL_PYTHON_EXAMPLES=ON \
      -D BUILD_opencv_python2=OFF \
      -D BUILD_opencv_python3=ON \
      -D PYTHON_DEFAULT_EXECUTABLE=python3 \
      -D WITH_MKL=ON \
      -D WITH_CUDA=ON \
      -D CUDA_FAST_MATH=ON \
      -D WITH_CUBLAS=ON \
      -D WITH_CUDNN=ON \
      -D WITH_NVCUVID=OFF \
      -D OPENCV_DNN_CUDA=OFF \
      -D BUILD_opencv_cudaimgproc=OFF \
      -D BUILD_EXAMPLES=ON ..
    #   -D CUDA_ARCH_PTX=7.5 \
    

    補足説明

    • MKL (Intel Math Kernel Library) を使わないときは「-D WITH_MKL=OFF
    • NVIDIA CUDA使わないときは,次の設定を外す
        -D WITH_CUDA=ON \
        -D CUDA_FAST_MATH=ON \
        -D WITH_CUBLAS=ON \
        -D WITH_CUDNN=ON \
        -D WITH_NVCUVID=OFF \
        -D OPENCV_DNN_CUDA=ON \
        -D CUDA_ARCH_PTX=7.5 \
        -D BUILD_opencv_cudaimgproc=OFF \
      
    • 「-DCUDA_ATCH_PTX=7.5」は,CUDA PTX 7.5 用のみをビルドすることにして,ビルド時間短縮のためなので,問題があれば外す
    • cmake のオプションについては「ccmake ..」で確認できる
    • 古いバージョンである OpenCV 3.4.1ubuntu 18.04 でビルドするとき 「unsupported GNU version! gcc version later than 6 are not supported!」というエラーが出る場合がある. このエラーを回避するために,次のコマンドを実行する
      CC=gcc-6 CXX=g++-6 cmake -D CMAKE_BUILD_TYPE=RELEASE \
            -D CMAKE_INSTALL_PREFIX=/usr/local \
            -D INSTALL_PYTHON_EXAMPLES=ON \
            -D OPENCV_EXTRA_MODULES_PATH=/tmp/opencv_contrib/modules \
            -D BUILD_opencv_python3=ON \
            -D PYTHON_DEFAULT_EXECUTABLE=python3 \
            -D BUILD_EXAMPLES=ON ..
      
  3. cmake の結果の確認

    エラーメッセージが出ていないこと

    [image]
  4. ビルド

    端末で,次のコマンドを実行.

    cd /usr/local/opencv/build
    CUDA_PATH="/usr/local/cuda-11.7" CFLAGS="-I/usr/local/cuda-11.7/include" LDFLAGS="-L/usr/local/cuda-11.7/lib64" \
    make -j4
    

    [image]
  5. ビルドの結果の確認

    エラーメッセージが出ていないことを確認

    [image]
  6. インストール

    端末で,次のコマンドを実行.

    sudo make install
    sudo /sbin/ldconfig
    
  7. インストールの結果の確認

    エラーメッセージが出ていないことを確認

    [image]
  8. バージョン確認

    バージョン番号が表示されれば OK.下の図とは違うバージョンが表示されることがある.

    python3 -c "import cv2; print( cv2.__version__ )"
    

    [image]
  9. プログラムを動かしてみる

    Python プログラムの実行

    Python プログラムの実行

    Python 開発環境(Jupyter Qt Console, Jupyter ノートブック (Jupyter Notebook), Jupyter Lab, Nteract, Spyder, PyCharm, PyScripterなど)も便利である.

    Python 開発環境の説明: 別ページにまとめている.

    import cv2
    CVSAMPLEDAT="/usr/local/share/opencv4/samples/data/"
    bgr = cv2.imread(CVSAMPLEDAT + "fruits.jpg")
    cv2.imshow("", bgr)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    画像が表示されるので確認. このあと,ウインドウの右上の「x」をクリックしない.画面の中をクリックしてから,何かのキーを押して閉じる

    [image]