金子邦彦研究室インストール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 の公式情報】

前準備

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

Gitは,バージョン管理システム.ソースコードの管理や複数人での共同に役立つ.

サイト内の関連ページ

Windows での Git のインストール: 別ページ »で説明している.

関連する外部ページ

Git の公式ページ: https://git-scm.com/

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

CMake はビルドツールである.

サイト内の関連ページ

Windows での cmake のインストール: 別ページ »で説明している.

関連する外部ページ

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

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

7-Zip 23.01 のインストール

7-Zipは,ファイルの圧縮や展開のツール.さまざまなフォーマットに対応している.

Windows では, コマンドプロンプトを管理者として開き, 次のコマンドを実行することにより, 7-Zip 23.01 のインストールを行うことができる.

mkdir %HOMEPATH%\7zip
cd %HOMEPATH%\7zip
curl -O https://www.7-zip.org/a/7z2301-x64.exe
.\7z2301-x64.exe
powershell -command "$oldpath = [System.Environment]::GetEnvironmentVariable(\"Path\", \"Machine\"); $oldpath += \";c:\Program Files\7-Zip\"; [System.Environment]::SetEnvironmentVariable(\"Path\", $oldpath, \"Machine\")"

サイト内の関連ページ

Windows での 7-Zip のインストール: 別ページ »で説明している.

関連する外部ページ

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

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

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

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

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

サイト内の関連ページ

関連する外部ページ

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

Build Tools for Visual Studio 2022,NVIDIA ドライバ,NVIDIA CUDA ツールキット,NVIDIA cuDNN のインストール(Windows 上)

サイト内の関連ページ

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

関連する外部ページ

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="%OpenBLAS_ROOT%\lib\openblas.lib" ^
    -DGlog_DIR="%GLOG_ROOT%" ^
    -DGLOG_LIBRARY="%GLOG_ROOT%\lib\glog.lib" ^
    -DGLOG_INCLUDE_DIR="%GLOG_ROOT%\include" ^
    -DGflags_DIR="%GFLAGS_ROOT%" ^
    -DCeres_DIR="%CERES_ROOT%" ^
    -DMETIS_INCLUDE_DIR="%SUITESPARSE_ROOT%\include" ^
    -DCXSparse_INCLUDE_DIR="%SUITESPARSE_ROOT%\include\suitesparse" ^
    -DCXSparse_LIBRARY="%SUITESPARSE_ROOT%\lib\libcxsparse.lib" ^
    -DSuiteSparse_AMD_INCLUDE_DIR="%SUITESPARSE_ROOT%\include\suitesparse" ^
    -DSuiteSparse_CAMD_INCLUDE_DIR="%SUITESPARSE_ROOT%\include\suitesparse" ^
    -DSuiteSparse_CCOLAMD_INCLUDE_DIR="%SUITESPARSE_ROOT%\include\suitesparse" ^
    -DSuiteSparse_CHOLMOD_INCLUDE_DIR="%SUITESPARSE_ROOT%\include\suitesparse" ^
    -DSuiteSparse_COLAMD_INCLUDE_DIR="%SUITESPARSE_ROOT%\include\suitesparse" ^
    -DSuiteSparse_Config_INCLUDE_DIR="%SUITESPARSE_ROOT%\include\suitesparse" ^
    -DSuiteSparse_SPQR_INCLUDE_DIR="%SUITESPARSE_ROOT%\include\suitesparse" ^
    -DSuiteSparse_AMD_LIBRARY="%SUITESPARSE_ROOT%\lib\libamd.lib" ^
    -DSuiteSparse_CAMD_LIBRARY="%SUITESPARSE_ROOT%\lib\libcamd.lib" ^
    -DSuiteSparse_CCOLAMD_LIBRARY="%SUITESPARSE_ROOT%\lib\libccolamd.lib" ^
    -DSuiteSparse_CHOLMOD_LIBRARY="%SUITESPARSE_ROOT%\lib\libcholmod.lib" ^
    -DSuiteSparse_COLAMD_LIBRARY="%SUITESPARSE_ROOT%\lib\libcolamd.lib" ^
    -DSuiteSparse_Config_LIBRARY="%SUITESPARSE_ROOT%\lib\suitesparseconfig.lib" ^
    -DSuiteSparse_SPQR_LIBRARY="%SUITESPARSE_ROOT%\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="%OpenBLAS_ROOT%\lib\openblas.lib" ^
      -DOpenBLAS_INCLUDE_DIR="%OpenBLAS_ROOT%\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に,次を追加することにより,パスを通す

    Windows で,コマンドプロンプト管理者として実行

    コマンドプロンプトを管理者として実行: 別ページ »で説明

    次のコマンドを実行

    powershell -command "$oldpath = [System.Environment]::GetEnvironmentVariable(\"Path\", \"Machine\"); $oldpath += \";C:\opencv\x64\vc17\bin\"; [System.Environment]::SetEnvironmentVariable(\"Path\", $oldpath, \"Machine\")"
    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

    そのために Windows で,コマンドプロンプト管理者として実行

    コマンドプロンプトを管理者として実行: 別ページ »で説明

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

    Windows で,コマンドプロンプト管理者として実行

    コマンドプロンプトを管理者として実行: 別ページ »で説明

    次のコマンドを実行

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

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

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

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

    [image]

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

  18. 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 のまとめ: 別ページ »にまとめ

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

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