Windows で OpenCV バージョン 5 をビルド
【概要】
OpenCV (Open Source Computer Vision Library) とは,実時間コンピュータビジョン(real time computer vision,画像や映像をリアルタイムに処理する技術分野)のアルゴリズムと文書とサンプルコードの集まりである.このページでは,Windows で,OpenCV バージョン 5 をソースコードからビルドする手順を説明する.
【目次】
【関連する外部ページ】
参考 Web ページ: https://opencv.org
前準備
- Visual Studio Community 2022 のインストール
別の Web ページで,Visual Studio Community 2022 のインストールについて説明している.OpenCV バージョン 5 は C++17 を必須とするため,Visual Studio 2017 以降が必要である.
- cmake のインストール
別の Web ページで,cmake のインストールについて説明している.
- Git のインストール
OpenCV のソースコードを取得するために使用する.
インストール手順
- ソースコードの取得
コマンドプロンプトを開き,次のコマンドを実行する.OpenCV 本体と,追加モジュールを収めた opencv_contrib の両方を取得する.
git clone https://github.com/opencv/opencv.git git clone https://github.com/opencv/opencv_contrib.git - ビルド用ディレクトリの作成
opencvディレクトリの下に,ビルド結果を置くディレクトリを作成する.cd opencv mkdir build cd build - 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ライブラリが生成され,あとの設定が簡単になる. - ビルドの実行
生成された
OpenCV.slnを Visual Studio で開くか,コマンドプロンプトから次のコマンドを実行してビルドする.cmake --build . --config Releaseビルドには数十分程度かかる場合がある.エラーメッセージが出ていないことを確認する.
- インストール
ビルドが終わったら,次のコマンドで,指定したディレクトリへインストールする.
cmake --build . --config Release --target INSTALL -- /m - 環境変数 OpenCV_DIR の設定
参考 Web ページ: https://docs.opencv.org/5.0/d3/d52/tutorial_windows_install.html
「マイコンピュータ」→「プロパティ」→「詳細設定」→「環境変数」のように操作し,次のように設定する.
<設定例,64 ビット Windows の場合>
- 変数名: OpenCV_DIR
- 変数値: 「C:\opencv\build\install」
- 環境変数 PATH の設定
「マイコンピュータ」→「プロパティ」→「詳細設定」→「環境変数」のように操作し,次のように設定する.
- 変数名: PATH
- 変数値: 「%OpenCV_DIR%\x64\vc17\bin」を追加する(他のパスとは「;」で区切る).
使ってみる
- Microsoft Visual Studio 2022 の起動
- 「ファイル (File)」→「新規 (New)」→「プロジェクト (Project)」
- 「空のプロジェクト (Empty Project)」を選び,C++ のコンソールアプリケーションとして作成し,プロジェクト名を付ける
プロジェクト名は何でもよい.
- (オプション) 64 ビット Windows を使う場合の設定
- 「ビルド (Build)」→「構成マネージャ (Configuration Manager)」を開く
- 「プラットフォーム (Platform)」で「新規作成 (New)」を選ぶ
- 「新しいプラットフォーム (New Platform)」に「x64」を指定する.
- OpenCV に関する設定 (OpenCV Settings)
- プロジェクトを右クリックし,「プロパティ (Properties)」を選ぶ
- インクルード・ディレクトリの設定 (Set include directories)
「C/C++」→「全般 (General)」と操作し,次のように設定する.
- 構成 (Configuration): すべての構成 (All Configurations)
- 追加のインクルード ディレクトリ (Additional Include Directories): $(OpenCV_DIR)\include
- ライブラリ・ディレクトリの設定 (Set library directories)
「リンカー (Linker)」→「全般 (General)」と操作し,次のように設定する.
- 構成 (Configuration): すべての構成 (All Configurations)
- 追加のライブラリ ディレクトリ (Additional Library Directories): $(OpenCV_DIR)\x64\vc17\lib
- ライブラリの設定 (Set libraries)
「リンカー (Linker)」→「入力 (Input)」と操作し,「追加の依存ファイル (Additional Dependencies)」に,次のように設定する.
- 構成 (Configuration): Debug
- 追加の依存ファイル (Additional Dependencies): opencv_world500d.lib
さらに,次のように設定する.
- 構成 (Configuration): Release
- 追加の依存ファイル (Additional Dependencies): opencv_world500.lib
- ソースコードの追加操作
- 「ソース ファイル (Source Files)」を右クリックし,「追加 (Add)」→「新しい項目 (New Item)」と操作する
- 「C++ ファイル (.cpp)」を選び,「追加 (Add)」をクリックする
- エディタのウインドウを使い,ソースプログラムを入力
(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; } - ビルド (Build)
プロジェクト名を選び,「ビルド」と操作する.
ビルドの正常終了を確認する.
- 開始 (Start)
「デバッグ (Debug)」→「Start Without Debugging」(または CTRL + F5 キー). ウインドウが現れるので,結果を確認する.