ユースケース.OpenCVはWindows でも簡単にインストールできるが,OpenCV conrtib を存分に使いたい,自分の環境にあわせてビルドしたい(NVidia CUDA を使うなど)場合は,ソースコードからビルドする.
OpenCV は,実時間コンピュータビジョン (real time computer vision) の アルゴリズムと文書とサンプルコードの集まり.
【サイト内の OpenCV 関連ページ】
【OpenCV の公式情報】
GPU は,グラフィックス・プロセッシング・ユニットの略で、コンピュータグラフィックス関連の機能,乗算や加算の並列処理の機能などがある. NVIDIA CUDA ツールキット は,NVIDIA社が提供している GPU 用のプラットフォームである.
【インストール手順の詳細説明】
Build Tools for Visual Studio 2022 (ビルドツール for Visual Studio 2022)もしくはVisual Studio 2022 を,前もってインストールしておく.
Windows での Visual Studio 2022 のインストール: 別ページで説明している.
Build Tools for Visual Studio 2022 (ビルドツール for Visual Studio 2022) のインストール: 別ページで説明している.
Windows のスタートメニューで「設定」,「アプリ」と操作して,「NVIDIA ・・・」を削除
hwinfo (URL: https://www.hwinfo.com) を使って調べることができる.
あとで、NVIDIA CUDA ツールキットをインストールするので、そのときに、NVIDIA ドライバもインストールすることにする.次へ進む.
但し, NVIDIA CUDA ツールキットの古いバージョンを使う場合には,次のページから,最新のNVIDIA ドライバをダウンロードして,インストールする.
NVIDIA ドライバのダウンロードページ: https://www.nvidia.co.jp/Download/index.aspx?lang=jp
NVIDIA ドライバのインストールが必要な場合は,このときに,同時にインストールする
次のページからダウンロードし,インストールする.
NVIDIA CUDA ツールキットのページ: https://developer.nvidia.com/cuda-toolkit-archive
NVIDIA CUDA クイックスタートの公式ページ: https://docs.nvidia.com/cuda/cuda-quick-start-guide/index.html
管理者として実行した コマンドプロンプトで,次のコマンドを実行.
v11.7」のところは,実際にインストールされているバージョンを確認し,読み替えてください.
cd "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\bin" curl -O http://www.winimage.com/zLibDll/zlib123dllx64.zip call powershell -command "Expand-Archive zlib123dllx64.zip" copy zlib123dllx64\dll_x64\zlibwapi.dll .
Windows で 「Could not locate zlibwapi.dll. Please make sure it is in your library path!」と表示されるときの対処:
ここの説明を参考に ZLIB DLL をインストールする.
cuDNN のダウンロードのため.
「Join now」をクリック.その後,画面の指示に従う. 利用者本人が,電子メールアドレス,表示名,パスワード,生年月日を登録.利用条件等に合意.
「C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7」に展開(解凍)した場合は, すでに パスは通っているので,何もしなくてよい.
Windowsのコマンドプロンプトを開き,次のコマンドを実行.エラーメッセージが出ないことを確認.
where cudnn64_8.dll
システム環境変数 CUDNN_PATH の設定
管理者として実行した コマンドプロンプトで,次のコマンドを実行.
「C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7」は, 実際に展開(解凍)したディレクトリに読み替えること.
call powershell -command "[System.Environment]::SetEnvironmentVariable(\"CUDNN_PATH\", \"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\", \"Machine\")"
Ubuntu で,システム Python 以外の Python をインストールしたい場合は pyenv が便利である: 別ページで説明している.
Python の公式ページ: http://www.python.org/
Python は,次のコマンドで起動できる.
システム Python を用いるときは,pip, setuptools の更新は次のコマンドで行う.
sudo apt -y update sudo apt -y install python3-pip python3-setuptools
pip は,次のコマンドで起動できる.
python -m pip install -U numpy
Windows では,前準備として次を行う.
git のページ: https://git-scm.com/
cmake のダウンロードページ: https://cmake.org/download/
OpenCV を C:\opencv, C:\opencv_contrib にインストールする
cd c:\ rmdir /s /q opencv rmdir /s /q opencv_contrib
次のページなどで,最新バージョンのバージョン番号を確認できる.
cd c:\ git clone --recursive https://github.com/opencv/opencv.git
OpenCV contrib が不要の場合は,この手順は不要である
cd c:\ rmdir /s /q opencv_contrib git clone --recursive https://github.com/opencv/opencv_contrib.git
バージョン 3.9 系列なのか、3.8 系列なのか、3.7 系列なのか、3.6 系列なのか、調べる.この情報はあとで使う.
下の実行例では、Python のバージョンは 3.8 系列(3.8.3) である
python --version
複数表示されたときは,表示の一番上を使う.この結果は,あとの設定で使う.
where python
python -m pip install pylint flake8
cmake でのオプションについて
下の手順は「cmake -G "Visual Studio 17 2022"」とある通り, Build Tools for Visual Studio 2022 を使う.そのインストールは: 別ページで説明している.
「c:\」ではなくて「c:/」のようにしている. 「\」は使わずに「/」を使う. これは、opencv_contrib の modules 下の cmake のエラーを回避するため.
次の設定では,実際に存在するファイル名を設定する必要がある. 必要に応じて,実際の自分のパソコンのファイルを検索すること.
※ 先ほど調べた Python 3 のバージョンが、 Python 3.9 系列のときは「python39.lib」となり、 Python 3.8 系列のときは「python38.lib」となり、 Python 3.7 系列のときは「python37.lib」のようにとなる.
cmake の実行手順例は次の通り
cd c:\ cd opencv rmdir /s /q build mkdir build cd build del CMakeCache.txt cmake -G "Visual Studio 17 2022" -A x64 -T host=x64 ^ -DCMAKE_BUILD_TYPE=RELEASE ^ -DWITH_CUDA=ON ^ -DCUDA_NVCC_FLAGS="-allow-unsupported-compiler" ^ -DOPENCV_EXTRA_MODULES_PATH=c:/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:/Program Files/Python39/python.exe" ^ -DBUILD_opencv_python3=ON ^ -DPYTHON3_EXECUTABLE="C:/Program Files/Python39/python.exe" ^ -DPYTHON3_INCLUDE_DIR="C:/Program Files/Python39/include" ^ -DPYTHON3_LIBRARY="C:/Program Files/Python39/libs/python39.lib" ^ -DPYTHON3_NUMPY_INCLUDE_DIRS="C:/Program Files/Python39/lib/site-packages/numpy/core/include" ^ -DBUILD_EXAMPLES=ON ^ -DWITH_OPENGL=ON ^ -DOPENCV_ENABLE_NONFREE=OFF ^ ..
cmake でのオプションの調整について
3546例えば,上に書いた cmake でのオプションに、次を付け加えるなどが考えられる.
-DWITH_CUDA=ON ^ -DCUDA_FAST_MATH=ON ^ -DWITH_CUBLAS=ON ^ -DWITH_CUDNN=ON ^ -DWITH_NVCUVID=ON ^ -DOPENCV_DNN_CUDA=ON ^
※ Intel MKL は,「w_mkl_2019.4.245.exe」を用いてインストール済み,そして,「C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2019\windows\redist\intel64_win\tbb\vc_mt」にパスが通っているとする.
上に書いた cmake でのオプションに、次を付け加える
-DWITH_MKL=ON ^ -DMKL_USE_MULTITHREAD=ON ^ -DWITH_TBB=ON ^ -DMKL_WITH_TBB=ON ^
上に書いた cmake でのオプションに、次を付け加える.
※ Windows での VTK のインストール手順は、 「Windows で VTK 最新版をソースコードからビルドして、インストールする(マイクロソフト 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" ^
Python 3 のところが自動設定される(Python 3 を使わない場合は,その設定は無視)
※ 下図のとおりになるとは限らない.
※ 最後のコマンドの実行の結果,エラーメッセージが出た場合には,自動設定がうまくいっていない.設定を変えてやり直す.
cmake --build . --config RELEASE --target INSTALL
エラーが無ければ,インストールが終わっている.エラーメッセージが出ていないことを確認. そして,インストールが終わっていることも確認.
※ 黄色の警告メッセージは無視しても良い
管理者として実行した コマンドプロンプトで,次のコマンドを実行.
call powershell -command "$oldpath = [System.Environment]::GetEnvironmentVariable(\"Path\", \"Machine\"); $oldpath += \";c:\opencv\build\bin\release\"; [System.Environment]::SetEnvironmentVariable(\"Path\", $oldpath, \"Machine\")"
「Python39」のところは,実際の Python インストールディレクトリに読み替えて実行すること.
dir "C:\Program Files\Python39\lib\site-packages\cv2"
※ Python 関係のファイルがインストールされていない場合でも,Python ローダ (python loader) を使用することは推奨しない.(Python ローダの利用を使用すると,エラーが出たときに,Python のインストール: 別ページで説明している.からやり直す可能性がある.Python ローダをよく知らずに実行するのは避けること)
python -c "import cv2; print( cv2.__version__ )"