OpenCV 4.1.0をWindowsでビルドする手順


OpenCV 4.1.0をWindowsでビルドする手順です。
CUDA 10.0、VTK 8.2、Qt5 を有効にして、Python 3からも利用できるようにします。

ここでは必要なソフトのインストール方法などは省略して、OpenCVをビルドする手順に焦点を当てました。
もう少し細かい説明は、こちらのBlogに書いているので必要に応じて参照してください。

OpenCV 4.1.0のビルド環境

以下の環境でOpenCV 4.1.0をビルドしています。
なお、Visual Studio 2019を使うとビルドに失敗します。

  • Microsoft Windows 10 Pro
  • Microsoft Visual Studio Community 2017 Version15.9.11
  • Git for Windows(gitコマンドが利用できれば良い)
  • CMake 3.1.4
  • Python 3.7.3 for Windows
  • CUDA 10.0
  • VTK 8.2.0
  • Qt 5.12.2

PATHの設定

CUDA、VTK、Qtなどは事前にパスを通しておきます。

  • CUDA 10
    • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin
    • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\libnvvp
    • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\extras\CUPTI\libx64
  • Git for Windows
    • C:\Program Files\Git\cmd
  • Qt5
    • C:\Qt\Qt5.12.2\5.12.2\msvc2017_64\bin
  • VTK
    • C:\lib\VTK\bin
  • Python 3.7.3
    • C:\Python37\Scripts\
    • C:\Python37\

ビルド環境の準備

Python用にビルドするためにnumpyが必要になるので、ビルド用のPython仮想環境を作成します。

# 仮想環境の作成
python -m venv C:\venvs\build_opencv410
C:\venvs\build_opencv410\Scripts\activate

# numpyの導入
pip install numpy

OpenCVのビルド

opencvとopencv_contribのソースコードを取得します。

# 作業用のフォルダ作成
mkdir c:\build\opencv410
cd /d c:\build\opencv410

# OpenCVのソース取得
git clone https://github.com/opencv/opencv.git
cd opencv
git checkout 4.1.0
cd ..

# OepnCV Contribのソース取得
# OpenCVのビルドにはcontribのopencv_cudevが必須
git clone https://github.com/opencv/opencv_contrib.git
cd opencv_contrib
git checkout 4.1.0
cd ..

CMakeを起動して以下のように設定を行います。
環境によって設定項目が異なりますが、ポイントになる部分は赤矢印を付けています。

  • OPENCV_EXTRA_MODULES_PATHにopencv_contribのmodulesフォルダを指定
  • PYTHON3_NUMPY_INCLUDE_DIRSにnumpyのincludeフォルダを指定
  • PYTHON3_PACKAGES_PATHにPythonのsite-packagesフォルダを指定
  • CMAKE_INSTALL_PREFIXにOpenCVをインストールするフォルダを指定
  • CPUやCUDAのアーキテクチャは利用している環境に合わせて設定
  • WITH_CUDA,WITH_VTK,WITH_QTなどを必要に応じて選択
  • 他の設定は以下画像を参照

設定が完了したらCMakeのGenerateでコードを生成し、Open ProjectでVisual Studio 2017のソリューションファイルを開きます。
Visual Studio 2017のバッチビルドで、INSTALLをビルドすれば完了です。

OpenCVの各種ファイルはCMAKE_INSTALL_PREFIXで指定したフォルダに、Python3用のモジュールはPYTHON3_PACKAGES_PATHで指定したフォルダ配下にcv2フォルダが作成されて格納されます。

OpenCVをどこからでも利用できるようにする場合、環境変数PATHにCMAKE_INSTALL_PREFIX配下に作成されたbinフォルダ(C:\lib\OpenCV410\x64\vc15\binなど)を追加してください。

Pythonから利用する方法

Python環境にビルドしたOpenCVを導入するには、ビルド時に作成されたpython_loaderフォルダのsetup.pyを利用します。
OpenCVを導入したいPythonの仮想環境をアクティブにしてsetup.py installとすれば導入できます。

# 仮想環境を作成してアクティブ化
python -m venv C:\venvs\cv410
C:\venvs\cv410\Scripts\activate.bat

# OpenCVの導入
python C:\build\opencv410\opencv\build\python_loader\setup.py install

pip listでopencvが導入されたことが確認できます。

pip list
Package    Version
---------- -------
numpy      1.16.2
opencv     4.1.0
pip        19.0.3
setuptools 40.8.0

PythonにOpenCVを導入しても、必要なファイル(OpenCVのdllファイルや、依存しているCUDA,VTK,Qtなどのファイル)が参照できない状態だとOpenCVを使う時に「DLL load failed: 指定されたモジュールが見つかりません」のようなエラーが発生します。

以下コマンドで、OpenCVを正しくロードできるか試してください。
もしDLL load failedのエラーが発生するようならPATHが正しく設定されているか確認してください。

# OpenCVのバージョン表示
# 正しくインストールできていれば 4.1.0 と表示される
python -c "import cv2; print(cv2.__version__)"

# OpenCVのビルド情報表示
# 正しくインストールしていればOpenCVのビルド情報が詳細に表示される
python -c "import cv2; print(cv2.getBuildInformation())"