Windows で OpenCV バージョン 5 をビルド

概要

OpenCV (Open Source Computer Vision Library) とは,実時間コンピュータビジョン(real time computer vision,画像や映像をリアルタイムに処理する技術分野)のアルゴリズムと文書とサンプルコードの集まりである.

このページでは,Windows で,OpenCV バージョン 5 をソースコードからビルドする手順を説明する.

目次

関連する外部ページ

参考 Web ページ: https://opencv.org

前準備


インストール手順

  1. ソースコードの取得

    コマンドプロンプトを開き,次のコマンドを実行する.OpenCV 本体と,追加モジュールを収めた opencv_contrib の両方を取得する.

    git clone https://github.com/opencv/opencv.git
    git clone https://github.com/opencv/opencv_contrib.git
    
  2. ビルド用ディレクトリの作成

    opencv ディレクトリの下に,ビルド結果を置くディレクトリを作成する.

    cd opencv
    mkdir build
    cd build
    
  3. cmake による構成

    cmake-gui を起動するか,コマンドプロンプトから次のコマンドを実行し,Visual Studio 用のプロジェクトファイルを生成する.OPENCV_EXTRA_MODULES_PATH には,先に取得した opencv_contrib の modules ディレクトリを指定する.

    cmake -G "Visual Studio 17 2022" -A x64 -D CMAKE_BUILD_TYPE=Release -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules -D BUILD_opencv_world=ON ..
    

    BUILD_opencv_world を有効にすると,個々のモジュールのライブラリファイルではなく,1 個にまとまった opencv_world ライブラリが生成され,あとの設定が簡単になる.

  4. ビルドの実行

    生成された OpenCV.sln を Visual Studio で開くか,コマンドプロンプトから次のコマンドを実行してビルドする.

    cmake --build . --config Release
    

    ビルドには数十分程度かかる場合がある.エラーメッセージが出ていないことを確認する.

  5. インストール

    ビルドが終わったら,次のコマンドで,指定したディレクトリへインストールする.

    cmake --build . --config Release --target INSTALL -- /m
    
  6. 環境変数 OpenCV_DIR の設定

    参考 Web ページ: https://docs.opencv.org/5.0/d3/d52/tutorial_windows_install.html

    「マイコンピュータ」→「プロパティ」→「詳細設定」→「環境変数」のように操作し,次のように設定する.

    <設定例,64 ビット Windows の場合>

    • 変数名: OpenCV_DIR
    • 変数値: 「C:\opencv\build\install
  7. 環境変数 PATH の設定

    「マイコンピュータ」→「プロパティ」→「詳細設定」→「環境変数」のように操作し,次のように設定する.

    • 変数名: PATH
    • 変数値: 「%OpenCV_DIR%\x64\vc17\bin」を追加する(他のパスとは「;」で区切る).

使ってみる

  1. Microsoft Visual Studio 2022 の起動
  2. ファイル (File)」→「新規 (New)」→「プロジェクト (Project)」
  3. 「空のプロジェクト (Empty Project)」を選び,C++ のコンソールアプリケーションとして作成し,プロジェクト名を付ける

    プロジェクト名は何でもよい.

  4. (オプション) 64 ビット Windows を使う場合の設定
    1. ビルド (Build)」→「構成マネージャ (Configuration Manager)」を開く
    2. プラットフォーム (Platform)」で「新規作成 (New)」を選ぶ
    3. 新しいプラットフォーム (New Platform)」に「x64」を指定する.
  5. OpenCV に関する設定 (OpenCV Settings)
    1. プロジェクトを右クリックし,「プロパティ (Properties)」を選ぶ
    2. インクルード・ディレクトリの設定 (Set include directories)

      C/C++」→「全般 (General)」と操作し,次のように設定する.

      • 構成 (Configuration): すべての構成 (All Configurations)
      • 追加のインクルード ディレクトリ (Additional Include Directories): $(OpenCV_DIR)\include
    3. ライブラリ・ディレクトリの設定 (Set library directories)

      リンカー (Linker)」→「全般 (General)」と操作し,次のように設定する.

      • 構成 (Configuration): すべての構成 (All Configurations)
      • 追加のライブラリ ディレクトリ (Additional Library Directories): $(OpenCV_DIR)\x64\vc17\lib
    4. ライブラリの設定 (Set libraries)

      リンカー (Linker)」→「入力 (Input)」と操作し,「追加の依存ファイル (Additional Dependencies)」に,次のように設定する.

      • 構成 (Configuration): Debug
      • 追加の依存ファイル (Additional Dependencies): opencv_world500d.lib

      さらに,次のように設定する.

      • 構成 (Configuration): Release
      • 追加の依存ファイル (Additional Dependencies): opencv_world500.lib
  6. ソースコードの追加操作
    1. 「ソース ファイル (Source Files)」を右クリックし,「追加 (Add)」→「新しい項目 (New Item)」と操作する
    2. C++ ファイル (.cpp)」を選び,「追加 (Add)」をクリックする
  7. エディタのウインドウを使い,ソースプログラムを入力 (Edit a source program in the editor window)

    https://docs.opencv.org/5.0/db/d64/tutorial_load_save_image.html に記載のサンプルコードをもとにしている.

    C:\\HappyFish.jpg」のところは,画像ファイル名を設定すること.

    #include<opencv2/core.hpp>
    #include<opencv2/imgcodecs.hpp>
    #include<opencv2/highgui.hpp>
    
    #include<iostream>
    #include<string>
    
    using namespace cv;
    using namespace std;
    
    int main( int argc, char** argv )
    {
        string imageName("C:\\HappyFish.jpg");
        if( argc > 1)
        {
            imageName = argv[1];
        }
    
        Mat image;
        image = imread(imageName, IMREAD_COLOR); // Read the file
    
        if( image.empty() )                      // Check for invalid input
        {
            cout <<  "Could not open or find the image" << endl ;
            return -1;
        }
    
        namedWindow( "Display window", WINDOW_AUTOSIZE ); // Create a window for display.
        imshow( "Display window", image );                // Show our image inside it.
    
        waitKey(0); // Wait for a keystroke in the window
        return 0;
    }
    
  8. ビルド (Build)

    プロジェクト名を選び,「ビルド」と操作する.

    ビルドの正常終了を確認する.

  9. 開始 (Start)

    デバッグ (Debug)」→「Start Without Debugging」(または CTRL + F5 キー). ウインドウが現れるので,結果を確認する.