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())"