Windows での,OpenCV 最新版をソースコードからビルドして,インストールする手順を説明する.MSYS2 を使用する.Windows の C/C++ で使いたい.CUDA に対応させたい.OpenCV の最新版を追いかけたい場合を想定している.
ユースケース.OpenCVはWindows でも簡単にインストールできるが,自分の環境にあわせてビルドしたい(NVidia CUDA を使うなど)場合は,ソースコードからビルドする.
謝辞:OpenCV および関連ソフトウエア類の作者に感謝します
Python の URL: https://www.python.org/
Git の URL: https://git-scm.com/
cmake の URL: https://cmake.org/download/
sudo apt -yV install git cmake cmake-curses-gui cmake-gui
Windows での Visual C++ ビルドツール (Build Tools) のインストール手順: 別ページで説明している.
※ GPU とは,グラフィックス・プロセッシング・ユニットの略で、コンピュータグラフィックス関連の機能,乗算や加算の並列処理の機能などがある.
ダウンロードページ
詳細説明
※ CUDA とは,NVIDIA社が提供している GPU 用のプラットフォームである.
ダウンロードページ
TensorFlow 2.1 以上の GPU 版での,NVIDIA CUDA のバージョンは 10.1 が指定されている. TensorFlow 1.15の GPU 版での,NVIDIA CUDA のバージョンは 10.0 が指定されている. 指定されているバージョンより高いものは使わない. その根拠は次のページ. URL: https://www.tensorflow.org/install/source#common_installation_problems
詳細説明
ダウンロードページ
ダウンロードして展開(解凍)したら,パスを通しておくこと.
URL: https://www.tensorflow.org/install/source#common_installation_problems
詳細説明
OpenBLAS と連携させたいときは、前もって OpenBLAS をインストールしておく
VTK と連携させたいときは、前もって VTK をインストールしておく
Python 2.7 を使うときは、次のような手順で、OpenCVとの連携等に必要になるPythonパッケージをインストールしておく
C:\Python27\Scripts\pip install --no-deps -U numpy
pip install -U numpy pip install -U flake8
OpenCV を C:\opencv, C:\opencv_contrib, にインストールする
※ 起動は,Windows のメニューで「Visual Studio 20..」の下の「x64 Native Tools コマンドプロンプト (Command Prompt)」(あるいは類似名のもの)を選ぶ
※ 「x64 Native Tools コマンドプロンプト (Command Prompt)」がないときは, Visual C++ ビルドツールのインストールを行う. Visual C++ ビルドツールのインストール手順は,別ページで説明している.
mkdir C:\tools cd C:\tools rmdir /s /q opencv rmdir /s /q opencv_contrib
cd C:\tools git clone https://github.com/opencv/opencv.git git clone https://github.com/opencv/opencv_contrib.git
バージョン 3.6 系列なのか、バージョン 3.7 系列なのか、調べる.この情報はあとで使う.
下の実行例では、Python のバージョンは 3.7 系列(3.7.3) である
python --version
「%LOCALAPPDATA%\Programs\Python\Python37\Python.exe」のように表示される.この結果は,あとの設定で使う.
where python
cmake でのオプションについて
下の手順は「cmake -G "Visual Studio 16 2019"」とある通り、 Visual Studio 2019 の Visual C++ ビルドツール (Build Tools) を使う場合の手順である.
「C:\tools」ではなくて「C:/tools」のようにしている. 「\」は使わずに「/」を使う. これは、opencv_contrib の modules 下の cmake のエラーを回避するため.
-DBUILD_opencv_python2=ON ^ -DPYTHON2_EXECUTABLE=C:/Python27/python.exe ^ -DPYTHON2_INCLUDE_DIR=C:/Python27/include ^ -DPYTHON2_LIBRARY=C:/Python27/libs/python27.lib ^ -DPYTHON2_NUMPY_INCLUDE_DIRS=C:/Python27/lib/site-packages/numpy/core/include ^
なお「-DPYTHON2_LIBRARY=C:/Python27/libs/python27.lib」は, 実際の自分のパソコンのファイルを検索し、 実際に存在するファイル名を設定すること
次の設定は, 実際の自分のパソコンのファイルを検索し、 実際に存在するファイル名を設定すること
※ 先ほど調べた Python 3 のバージョンが、Python 3.6 系列のときは「python36.lib」となり、 Python 3.7 系列のときは「python37.lib」のようにとなる.
cmake の実行手順例は次の通り
cd c:\tools cd opencv rmdir /s /q build mkdir build cd build del CMakeCache.txt cmake -G "Visual Studio 16 2019" -T host=x64 ^ -DCMAKE_BUILD_TYPE=RELEASE ^ -DOPENCV_EXTRA_MODULES_PATH=C:\tools\opencv_contrib\modules ^ -DINSTALL_TESTS=ON ^ -DINSTALL_C_EXAMPLES=ON ^ -DWITH_PYTHON=ON ^ -DINSTALL_PYTHON_EXAMPLES=ON ^ -DBUILD_opencv_python2=OFF ^ -DPYTHON_DEFAULT_EXECUTABLE=C:/Users/user/AppData/Local/Programs/Python/Python37/python.exe ^ -DBUILD_opencv_python3=ON ^ -DPYTHON3_EXECUTABLE=C:/Users/user/AppData/Local/Programs/Python/Python37/python.exe ^ -DPYTHON3_INCLUDE_DIR=C:/Users/user/AppData/Local/Programs/Python/Python37/include ^ -DPYTHON3_LIBRARY=C:/Users/user/AppData/Local/Programs/Python/Python37/libs/python37.lib ^ -DPYTHON3_NUMPY_INCLUDE_DIRS=C:/Users/user/AppData/Local/Programs/Python/Python37/lib/site-packages/numpy/core/include ^ -DBUILD_EXAMPLES=ON ^ -DWITH_OPENGL=ON ^ -DOPENCV_ENABLE_NONFREE=OFF ^ ..
cmake でのオプションの調整
上に書いた cmake でのオプションに、次を付け加える
-DWITH_MKL=ON ^ -DMKL_USE_MULTITHREAD=ON ^ -DMKL_WITH_TBB=ON ^
上に書いた cmake でのオプションに、次を付け加える
-DWITH_CUDA=ON ^ -DWITH_CUBLAS=ON ^ -DBUILD_opencv_cudaimgproc=OFF ^
※ 「-DBUILD_opencv_cudaimgproc=OFF ^」は 2018/12時点のコンパイルエラーの回避のため
上に書いた cmake でのオプションに、次を付け加える.
※ Windows での VTK のインストール手順は、 「Windows で VTK 最新版をソースコードからビルドして、インストールする(Visual C++ ビルドツール (Build Tools) を使用)」で説明している.
-DWITH_VTK=ON ^ -DVTK_DIR="C:\tools\VTK" ^
上に書いた cmake でのオプションに、次を付け加える.
※ Windows でのインストール手順は、 「Windows で libPCL 1.9.0, Boost, Eigen, OpenNI 2.2, NITE2 のインストール」で説明している.
-DWITH_OPENNI2=ON ^ -DOPENNI2_INCLUDE="C:\Program Files\OpenNI2\include" ^ -DOPENNI2_LIB="C:\Program Files\OpenNI2\lib" ^ -DOPENNI2_REDIST="C:\Program Files\OpenNI2\Redist" ^
上に書いた cmake でのオプションに、次を付け加える.
※ Windows での OpenBLAS のインストールは「OpenBLAS をソースコードからビルドして、インストール(clang, flang を使用)(Windows 上)」で説明している.
-DOpenBLAS_LIB="C:/tools/OpenBLAS/lib/openblas.lib" ^ -DOpenBLAS_INCLUDE_DIR="C:/tools/OpenBLAS/include/openblas" ^ -DWITH_LAPACK=ON ^ -DLAPACK_LIBRARIES="C:/tools/lapack-release/lib/lapack.lib" ^ -DLAPACK_INCLUDE_DIR="C:/tools/lapack-release/CBLAS/include" ^ -DLAPACK_CBLAS_H="C:/tools/lapack-release/CBLAS/include/cblas.h" ^
MSYS2 の Cコンパイラ, make, cmake などをインストールしておくこと. MSYS2 の make, cmake を使ってビルドする
modules/core/CMakeFiles/opencv_core.dir/src/system.cpp でエラーが出るので「#include <unistd.h>」を書き加えておくこと
C:\tools\msys64\mingw64\bin\cmake -G "MSYS Makefiles" ^ -DWITH_QUIRC=OFF -DBUILD_opencv_hdf=OFF ^
-DLAPACK_LAPACKE_H="C:/tools/OpenBLAS/include/openblas/lapacke.h" ^ -DLAPACK_CBLAS_H="C:/tools/OpenBLAS/include/openblas/cblas.h" ^ -DLAPACK_INCLUDE_DIR="C:/tools/lapack-release/include" ^ -DLAPACK_LIB="C:/tools/lapack-release/lib/liblapack.a" ^ -DOpenBLAS_INCLUDE_DIR="C:/tools/OpenBLAS/include/openblas" ^ -DOpenBLAS_LIB="C:/tools/OpenBLAS/lib/libopenblas.a" ^ .. # -DWITH_TIFF=OFF -DWITH_JASPER=OFF -DWITH_OPENEXR=OFF -DWITH_IPP=OFF -DWITH_ITT=OFF -DBUILD_ZLIB=OFF -DBUILD_opencv_videoio=OFF -DBUILD_opencv_hdf=OFF -DBUILD_opencv_flann=OFF -DBUILD_opencv_dnn=OFF -DBUILD_opencv_highgui=OFF ^
Python 2, Python 3 のところが自動設定されるので確認する.
※ 下図のとおりになるとは限らない.
※ 最後のコマンドの実行の結果,エラーメッセージが出た場合には,自動設定がうまくいっていない.設定を変えてやり直す.
※ 但し,Python 2 を使わない場合,Python 3 を使わない場合は,Python の部分がうまく設定されていなくても無視すること.
cmake --build . --config RELEASE --target INSTALL
※ Windows の MSYS2 を使いたいときは、 次のように make を使う。
make -k -j4 make install
エラーメッセージが出ていないことを確認.
※ 黄色の警告メッセージは無視しても良い
次を追加する
C:\tools\opencv\build\bin\release
※ OpenCV のインストールで Python ローダ (python loader) を使用することは推奨しません.(Python ローダの利用では,エラーが出たときに,Python のインストールからやり直す可能性がある.Python ローダをよく知らずに実行するのは避けること)
dir %LOCALAPPDATA%\Programs\Python\Python37\lib\site-packages\cv2
python -c "import cv2; print( cv2.__version__ )"
※ このとき 「Original error was: DLL failed: 指定されたモジュールが見つかりません」 というエラーメッセージが出ることがある.
ANT_DIR
GSTREAMER_DIR
本サイトは金子邦彦研究室のWebページです.サイトマップは,サイトマップのページをご覧下さい. 本サイト内の検索は,サイト内検索のページをご利用下さい.
問い合わせ先: 金子邦彦(かねこ くにひこ) ![]()