Windows の C/C++ で使いたい.CUDA に対応させたい.OpenCV の最新版を追いかけたい場合を想定している."> OpenCV, OpenCV Contrib 4.6.0 のインストール,NVIDIA CUDA 対応可能(ソースコードを使用)(Windows 上)
トップページインストール,使い方Windows の種々のソフトウェア(インストール,使い方)OpenCV, OpenCV Contrib 4.6.0 のインストール,NVIDIA CUDA 対応可能(ソースコードを使用)(Windows 上)

OpenCV, OpenCV Contrib 4.6.0 のインストール,NVIDIA CUDA 対応可能(ソースコードを使用)(Windows 上)

ユースケース.OpenCVはWindows でも簡単にインストールできるが,OpenCV conrtib を存分に使いたい,自分の環境にあわせてビルドしたい(NVidia CUDA を使うなど)場合は,ソースコードからビルドする.

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

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

【OpenCV の公式情報】

前準備

Build Tools for Visual Studio 2022 (ビルドツール for Visual Studio 2022)もしくは Visual Studio 2022 のインストール(Windows 上)

Build Tools for Visual Studio 2022 (ビルドツール for Visual Studio 2022)もしくはVisual Studio 2022 を,前もってインストールしておく.NVIDIA CUDA の nvcc を機能させるため.

Git のインストール(Windows 上)

Git のページ https://git-scm.com/ からダウンロードしてインストール:

cmake のインストール(Windows 上)

cmake のダウンロードページ: https://cmake.org/download/

7-Zip のインストール(Windows 上)

7-Zip のページ: https://sevenzip.osdn.jp/

gflags,glog,Ceres ソルバ(Ceres Solver)のインストール

Windows での SuiteSparse,gflags,glog,Ceres ソルバ(Ceres Solver)のインストール: 別ページで説明している.

sfm を使いたいときはインストールする.

NVIDIA ドライバ,NVIDIA CUDA ツールキット, NVIDIA cuDNN のインストール

GPU は,グラフィックス・プロセッシング・ユニットの略で、コンピュータグラフィックス関連の機能,乗算や加算の並列処理の機能などがある. NVIDIA CUDA ツールキット は,NVIDIA社が提供している GPU 用のプラットフォームである. NVIDIA 社のグラフィックス・カードが持つ GPU の機能を使うとき,NVIDIA CUDA ツールキット を利用することができる.

以下,インストールの注意点をまとめている. インストールと動作確認の詳細別ページで説明している.

① TensorFlow, PyTorch が必要とするNVIDIA CUDA ツールキットとNVIDIA cuDNN のバージョンの確認

② NVIDIA ドライバ,NVIDIA CUDA ツールキット,NVIDIA cuDNN のインストール

Windows での NVIDIA ドライバ,NVIDIA CUDA ツールキット 11.8,NVIDIA cuDNN v8.6 のインストールと動作確認: 別ページで説明している.

古いバージョンの NVIDIA CUDA ツールキットNVIDIA cuDNN のインストールも,だいたい,同じ手順になる.

以下,インストールの注意点をまとめている.

③ NVIDIA ドライバ,NVIDIA CUDA ツールキット,NVIDIA cuDNN のインストールでの注意点まとめ

NVIDIA ドライバのインストールでの注意点まとめ(Windows 上)
NVIDIA CUDA ツールキットのインストールでの注意点まとめ(Windows 上)
NVIDIA cuDNN のインストールのインストールでの注意点まとめ(Windows 上)

Python 64 ビット版のインストール,pip と setuptools の更新(Windows 上)

Windows での Python 3.10 のインストール,pip と setuptools の更新: 別ページで説明している.

Python の公式ページ: http://www.python.org/

numpy のインストール(Windows 上)

  1. Windows では,コマンドプロン プトを管理者として実行する.
  2. numpy のインストール

    python -m pip install -U numpy
    

OpenCV のインストール(ソースコードを使用)

OpenCV を C:\opencv, C:\opencv_contrib にインストールする

  1. Windows で,コマンドプロンプト管理者として開く.

    Windowsコマンドプロンプト管理者として実行するには, 検索窓で「cmd」と入れたあと, 右クリックメニューで「管理者として実行」を選ぶのが簡単.

    [image]
  2. ディレクトリを削除する
    C:
    cd %HOMEPATH%
    rmdir /s /q opencv
    rmdir /s /q opencv_contrib
    

    [image]
  3. OpenCV のバージョンの確認

    次のページなどで,最新バージョンのバージョン番号を確認できる.

    https://github.com/opencv/opencv

  4. OpenCV のソースコードをダウンロード
    cd %HOMEPATH%
    rmdir /s /q opencv
    git clone --recursive https://github.com/opencv/opencv.git
    

    [image]
  5. OpenCV contrib のソースコードをダウンロード

    OpenCV contrib が不要の場合は,この手順は不要である

    cd %HOMEPATH%
    rmdir /s /q opencv_contrib
    git clone --recursive https://github.com/opencv/opencv_contrib.git
    

    [image]
  6. Python 3 のバージョンを調べる

    バージョン 3.10 系列なのか、バージョン 3.9 系列なのか、3.8 系列なのか、3.7 系列なのか、3.6 系列なのか、調べる.この情報はあとで使う.

    下の実行例では、Python のバージョンは 3.10 系列(3.10.5) である

    python --version
    

    [image]
  7. Python 3 の場所を調べる

    複数表示されたときは,表示の一番上を使う.この結果は,あとの設定で使う.

    where python
    

    [image]
  8. pip と setuptools の更新.numpy, pylint, flake8 のインストール.python-opencv のアンインストール
    python -m pip install -U pip setuptools
    python -m pip install -U numpy pylint flake8
    python -m pip uninstall python-opencv
    
  9. cmake の実行

    cmake でのオプションについて

    cmake の実行手順例は次の通り

    cd %HOMEPATH%
    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 ^
    -DBUILD_SHARED_LIBS=OFF ^
    -DWITH_CUDA=ON ^
    -DCUDA_NVCC_FLAGS="-allow-unsupported-compiler" ^
    -DBUILD_opencv_world=ON ^
    -DBUILD_opencv_apps=ON ^
    -DBUILD_opencv_sfm=OFF ^
    -DOPENCV_EXTRA_MODULES_PATH=C:%HOMEPATH%\opencv_contrib\modules ^
    -DWITH_PYTHON=ON ^
    -DBUILD_opencv_python2=OFF ^
    -DPYTHON_DEFAULT_EXECUTABLE="C:/Program Files/Python310/python.exe" ^
    -DBUILD_opencv_python3=ON ^
    -DPYTHON3_EXECUTABLE="C:/Program Files/Python310/python.exe" ^
    -DPYTHON3_INCLUDE_DIR="C:/Program Files/Python310/include" ^
    -DPYTHON3_LIBRARY="C:/Program Files/Python310/libs/python310.lib" ^
    -DPYTHON3_NUMPY_INCLUDE_DIRS="C:/Program Files/Python310/lib/site-packages/numpy/core/include" ^
    -DBUILD_EXAMPLES=ON ^
    -DWITH_OPENGL=ON ^
    -DOPENCV_ENABLE_NONFREE=OFF ^
    -DCMAKE_INSTALL_PREFIX="C:/opencv" ^
    -DBLAS_openblas_LIBRARY="C:/OpenBLAS/lib/openblas.lib" ^
    -DGlog_DIR="C:/glog" ^
    -DGLOG_LIBRARY="C:/glog/lib/glog.lib" ^
    -DGLOG_INCLUDE_DIR="C:/glog/include" ^
    -DGflags_DIR="C:/gflags" ^
    -DCeres_DIR="C:/ceres" ^
    -DMETIS_INCLUDE_DIR="C:/suitesparse/include" ^
    -DCXSparse_INCLUDE_DIR="C:/suitesparse/include/suitesparse" ^
    -DCXSparse_LIBRARY="C:/suitesparse/lib/libcxsparse.lib" ^
    -DSuiteSparse_AMD_INCLUDE_DIR="C:/suitesparse/include/suitesparse" ^
    -DSuiteSparse_CAMD_INCLUDE_DIR="C:/suitesparse/include/suitesparse" ^
    -DSuiteSparse_CCOLAMD_INCLUDE_DIR="C:/suitesparse/include/suitesparse" ^
    -DSuiteSparse_CHOLMOD_INCLUDE_DIR="C:/suitesparse/include/suitesparse" ^
    -DSuiteSparse_COLAMD_INCLUDE_DIR="C:/suitesparse/include/suitesparse" ^
    -DSuiteSparse_Config_INCLUDE_DIR="C:/suitesparse/include/suitesparse" ^
    -DSuiteSparse_SPQR_INCLUDE_DIR="C:/suitesparse/include/suitesparse" ^
    -DSuiteSparse_AMD_LIBRARY="C:/suitesparse/lib/libamd.lib" ^
    -DSuiteSparse_CAMD_LIBRARY="C:/suitesparse/lib/libcamd.lib" ^
    -DSuiteSparse_CCOLAMD_LIBRARY="C:/suitesparse/lib/libccolamd.lib" ^
    -DSuiteSparse_CHOLMOD_LIBRARY="C:/suitesparse/lib/libcholmod.lib" ^
    -DSuiteSparse_COLAMD_LIBRARY="C:/suitesparse/lib/libcolamd.lib" ^
    -DSuiteSparse_Config_LIBRARY="C:/suitesparse/lib/suitesparseconfig.lib" ^
    -DSuiteSparse_SPQR_LIBRARY="C:/suitesparse/lib/libspqr.lib" ^
    -DINSTALL_TESTS=ON ^
    -DINSTALL_C_EXAMPLES=ON ^
    -DINSTALL_BIN_EXAMPLES=ON ^
    -DINSTALL_PYTHON_EXAMPLES=ON ^
    ..
    

    [image]

    cmake でのオプションの調整について

    • NVIDIA CUDA ツールキット, NVIDIA cuDNN の設定例

      例えば,上に書いた cmake でのオプションに、次を付け加えるなどが考えられる.

      -DWITH_CUDA=ON ^
      -DCUDA_FAST_MATH=ON ^
      -DWITH_CUBLAS=ON ^
      -DWITH_CUDNN=ON ^
      -DWITH_NVCUVID=ON ^
      -DOPENCV_DNN_CUDA=ON ^
      

      [image]
    • Intel MKL を使いたいとき

      ※ 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 ^
      
    • VTK を使いたいとき

      上に書いた cmake でのオプションに、次を付け加える

      Windows での VTK のインストール手順は、 「Windows で VTK 最新版をソースコードからビルドして、インストールする(Build Tools for Visual Studio を利用)」で説明している.

      -DWITH_VTK=ON ^
      -DVTK_DIR="C:/tools/VTK" ^
      
    • OpenNI2 を使いたいとき

      上に書いた 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" ^
      
    • OpenBLAS を使いたいとき

      上に書いた cmake でのオプションに、次を付け加える

      Windows での OpenBLAS (BLAS, CBLAS, LAPACK, LAPACKE)のインストール(ソースコードを使用)(Build Tools for Visual Studio を利用): 別ページで説明している.

      -DOpenBLAS_LIB="C:/OpenBLAS/lib/openblas.lib" ^
      -DOpenBLAS_INCLUDE_DIR="C:/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" ^
      
  10. cmake の実行結果の確認

    Python 3 のところが自動設定される(Python 3 を使わない場合は,その設定は無視)

    ※ 下図のとおりになるとは限らない.

    ※ エラーメッセージが出た場合には,うまくいっていない.設定を変えてやり直す

    [image]
  11. ソースコードからビルドし、インストールする

    終了するまでしばらく待つ.

    cmake --build . --config RELEASE
    cmake --build . --config RELEASE --target INSTALL
    
  12. 結果の確認

    エラーが無ければ,インストールが終わっている.エラーメッセージが出ていないことを確認. そして,インストールが終わっていることも確認.

    ※ 黄色の警告メッセージは無視しても良い

    [image]
  13. Windowsシステム環境変数 Pathに,次を追加することにより,パスを通す

    コマンドプロンプトを管理者として開き, 次のコマンドを実行する.

    call powershell -command "$oldpath = [System.Environment]::GetEnvironmentVariable(\"Path\", \"Machine\"); $oldpath += \";C:\opencv\x64\vc17\bin\"; [System.Environment]::SetEnvironmentVariable(\"Path\", $oldpath, \"Machine\")"
    call powershell -command "$oldpath = [System.Environment]::GetEnvironmentVariable(\"Path\", \"Machine\"); $oldpath += \";C:\opencv\bin\"; [System.Environment]::SetEnvironmentVariable(\"Path\", $oldpath, \"Machine\")"
    
  14. Windowsシステム環境変数 LIB の設定

    次を追加する

    C:\opencv\x64\vc17\staticlib

    そのために コマンドプロンプトを管理者として開き, 次のコマンドを実行する.

    call powershell -command "$oldpath = [System.Environment]::GetEnvironmentVariable(\"LIB\", \"Machine\"); $oldpath += \";C:\opencv\x64\vc17\staticlib\"; [System.Environment]::SetEnvironmentVariable(\"LIB\", $oldpath, \"Machine\")"
    
  15. Windowsシステム環境変数 OPENCV_ROOT に,c:\opencv を設定

    コマンドプロンプトを管理者として開き, 次のコマンドを実行する.

    call powershell -command "[System.Environment]::SetEnvironmentVariable(\"OPENCV_ROOT\", \"c:\opencv\", \"Machine\")"
    

    [image]
  16. Python 関係のファイルもインストールされていることを確認

    Python310」のところは,実際の Python インストールディレクトリに読み替えて実行すること.

    dir "C:\Program Files\Python310\lib\site-packages\cv2"
    

    [image]

    ※ Python 関係のファイルがインストールされていない場合でも,Python ローダ (python loader) を使用することは推奨しない.(Python ローダを使用すると,エラーが出たときに,Python のインストールからやり直す可能性がある.Python ローダをよく知らずに実行するのは避けること)

  17. Python でOpenCV のバージョン確認

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

    [image]

OpenCV を用いた画像表示の例

OpenCV で画像表示を行う C++ プログラム

  1. まず,エディタを開く.

    ここではメモ帳 (notepad) を使っている.

    Windows では,Visual Studio の x64 Native Tools コマンドプロンプトを使う.(Windows のスタートメニューで起動できる). そして,次のように実行して,C++ のプログラムファイルを作る. そのファイル名は a.cpp としている.

    c:
    cd %HOMEPATH%
    notepad a.cpp
    
  2. いまメモ帳で開いたファイルを, 次のように編集する(コピー&ペーストしてください). そしてファイル名 a.cpp で保存する.
    #include<opencv2/opencv.hpp>
    
    int main (int argc, char *argv[])
    {
      cv::Mat bgr = cv::imread("c:/opencv/sources/samples/data/fruits.jpg");
      cv::imshow("", bgr);
      cv::waitKey(0);
      cv::destroyAllWindows();
    
      return 0;
    }
    
  3. Windows では,Visual Studio の x64 Native Tools コマンドプロンプトを使う.(Windows のスタートメニューで起動できる).次のように実行する.
    cl /I"c:\opencv\include" a.cpp /link /LIBPATH:"c:\opencv\x64\vc17\staticlib" opencv_world460.lib
    .\a.exe
    
  4. 画像表示が行われる.画面をクリックし,なにかのキーを押して閉じる.

OpenCV で画像表示を行う Python プログラム

Python プログラムの実行

Python プログラムの実行

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

Python のまとめ: 別ページにまとめている.

import cv2
bgr = cv2.imread('c:/opencv/sources/samples/data/fruits.jpg')
cv2.imshow("", bgr)
cv2.waitKey(0)
cv2.destroyAllWindows()

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