OpenCV + OpenCV Contribをビルド 【Windows編】
2020.05.08
こんにちは、代表の大野です。
本ブログは、OpenCVとOpenCV Contribを合わせ込んだビルドに関して書いていきます。
今日はWindows編です。
Windows版では、OpenCV Worldというビルド済みのものがすでに用意されているため
OpenCVのみの導入はわりと簡単にできたりしますが
OpenCV Contribという外部モジュールも一緒にビルドする場合には、
少々手間がかかります。
今回はその方法についてみていきます。
関連記事
OpenCV + OpenCV Contribをビルド【Windows編】
OpenCV + OpenCV Contribをビルド 【Linux編】(近日公開予定)
OpenCV + OpenCV Contribをビルド 【iOS編】(近日公開予定)
OpenCV + OpenCV Contribをビルド 【Android編】(近日公開予定)
環境
- Windows 10 Pro ver.1809 / 64bit
- Intel Core i7 1.80GHz / メモリ8GB
- OpenCV 4.3.0
- OpenCV Contrib 4.3.0
- Cmake 3.17.2
- Visual Studio 2019 for Windows
やること
Visual Studio のビルド環境構築
OpenCVおよびOpenCV Contribを合わせこんだビルドには、
Visual Studioを使用することにします。
すでにインストール済みの方はスキップしてください。
①Visual Studio Installerのインストール
現時点で最新版のVisual Studio 2019を以下から入手します。
今回は、Visual Studio コミュニティを使います。
https://visualstudio.microsoft.com/ja/downloads/
上記URLから「無料ダウンロード」ボタンをクリックすると、自動的にダウンロードが始まります。
あとは手順に従ってインストールを進めてください。
②C++向けビルドツールのインストール
Visual Studio Installerが立ち上がると、以下の画面が表示されると思います。
ビルドツール一式をインストールするため、「C++によるデスクトップ開発」を選択し
右下の「インストール」をクリックすると、インストールが始まります。
1GB超えるので、ネットワーク環境にもよりますが、10分ほどかかると思います。
インストールが完了すると、再起動を促されますので、再起動します。
これで一旦、Visual Studio側のセットアップは完了です。
CMakeの環境構築
続いて、ビルド環境を構築するためのCMakeというツールをダウンロードします。
こちらも、すでにインストール済みの方はスキップしてください。
上記CMakeの公式サイトから、「Download Latest Release」をクリックし、インストール一覧ページに遷移します。
ここから、Windows 64bit向けの最新のmsi形式(MicroSoft Windows Installerの略)のものをダウンロードします。(cmake-3.17.2-win64-x64.msi)
ダウンロードが完了すると、インストールのガイド画面が立ち上がるので、「Next」をクリックします。
利用規約・ライセンス同意画面が出るので、問題なければ
同意チェックボタンを押して、「Next」を選択します。
続いてパスを通すか聞かれます。
当社のSDKをご利用いただく方には、PowerShell経由でcmakeコマンドを使う必要があるため
基本的にはここでcmakeのパスを通しておくことをオススメします。
もちろんご自身であとでパスを通していただいても構いません。
今回は、自身のユーザーのパスのみを通すのを選択し、
Desktopアイコンもショートカットもするようにして「Next」としました。
all userのパスを通す場合は、システム管理者にご確認の上、行うようにしてください。
次にインストール先のフォルダです。
基本的には初期のままでよいかと思いますので、「Next」をクリックします。
インストールのための設定が終わりましたので、「Install」をクリックするとインストールがはじまります。
インストールが無事完了すると以下の画面が表示されます。
ショートカットアイコンから以下の画面が立ち上がれば無事完了です。
パスが通っているかも一応確認しておきましょう。
OpenCV / OpenCV Contribのダウンロード
いよいよ本丸である、OpenCVおよびOpenCV Contribをダウンロードします。
①OpenCVのダウンロード
まず、OpenCV本体を、OpenCVの公式サイトからダウンロードします。
今回は、現時点で最新のOpenCV4.3.0をダウンロードすることにします。
上記サイトのOpenCV-4.3.0より、「Windows」をクリックします。
以下のページに遷移すると自動的にOpenCVのダウンロードが始まります。
ダウンロード完了後にexeファイルをクリックすると、
展開先の指定画面が出ます。
今回は、Cドライブ直下に展開することにします。
以後、みなさんの環境に合わせて、読み替えていってください。
指定したら、「Extract」をクリックすると、展開がはじまります。
展開が終了すると、Cドライブ直下に、「opencv」フォルダが生成されており、
中身が以下のようになっていれば、OpenCV本体のダウンロードは完了です。
②OpenCV Contribのダウンロード
続いて、OpenCV Contribをダウンロードしていきます。
注意点は、OpenCV本体とバージョンをピタリと合わせるようにしてください。
今回は、OpenCV4.3.0を使いますので、
OpenCV Contribも4.3.0をダウンロードしていきます。
https://github.com/opencv/opencv_contrib/releases
上記サイトの、4.3.0の項目から、「zip」ボタンにマウスオーバーすると、リンクが表示され、
クリックすると、zipファイルのダウンロードがはじまります。
ダウンロードが完了したら、
zipファイルをクリックするなど、マシンの設定にあわせてzipファイルを展開し、
OpenCV本体の展開先と同じ場所(今回はCドライブ直下)に展開フォルダを移動させてください。
展開先を以下の通り(今回はCドライブ直下)にすれば、セットアップ完了です。
同じCドライブ直下に、
「opencv」と「opencv_contrib-4.3.0」があることが確認できると思います。
OpenCV + OpenCV Contribのビルド
長かったですが、ようやくOpenCVとOpenCV Contribを合わせ込んでビルドする準備が整いました。
早速ビルドを行っていきましょう。
①ビルド用フォルダを作成する
まず、OpenCVとOpenCV Contribのビルドを行うための専用フォルダを用意します。
「opencv」フォルダの中に作ってもよいのですが、
今回は一応別のフォルダを用意することとし、フォルダ名を「opencv_build」としました。
②CMakeによるConfigure & Generate
ビルドにあたって、まずはCMakeを使ってビルド環境の構築をしましょう。
CMake GUIを開きます。
まず、OpenCV本体のソースの場所と、ビルド先ディレクトリを指定します。
CMake GUIの上部にある欄に以下を入力します。
(1)Where is the source code : C:¥opencv¥sources
(2)Where to build the binaries: C:¥opencv_build
(1)には、OpenCV本体のCMakeLists.txtのある「sources」フォルダを指定します。
(2)には、先ほど作成したビルド先のフォルダを指定します。
ここまで出来たら、CMake GUIの中段にある「Configure」をクリックします。
初回は、コンパイラ選択ウィンドウが立ち上がりますので、
先ほどインストールしたVisual Studioが選択されていれば問題ありませんのでそのまま進めてください。
すると、各種ビルド環境構築するための情報の読み込みが開始されます。
無事「Configure」が完了すると、
コンソールウィンドウには、「Configure done」と表示され、ビルド情報が下記の通り読み込まれます。
このNameとValueで整理されたテーブルを編集していくことで、
モジュールごとにビルドするしないや、読み込み先などを指定していく形となります。
まずは、OpenCV Contribを外部モジュールとして指定して一緒にビルドするために
上段をスクロールさせていき「OPENCV_EXTRA_MODULE_PATH」を探します。
Name欄が「OPENCV_EXTRA_MODULE_PATH」になっているところを見つけたら、
Value欄に、OpenCV Contribモジュールを設置した場所を指定します。
今回は、OpenCV ContribをCドライブ直下に展開したので、
「C:¥opencv_contrib-4.3.0/modules」を指定しています。
この際、modulesフォルダまでを指定することに注意してください。
続いて、Name欄から、「BUILD_opencv_world」の欄にもチェックを入れておくとよいでしょう。
OpenCV Worldは、様々なOpenCVのモジュールのオブジェクトファイルを
全部一つにまとめたDLL(動的リンクライブラリ)/LIBだと思ってもらえればOKです。
もしOpenCV本体のみを利用する際は、OpenCVの公式サイトからWindows版をダウンロードすると
すでに「opencv_world430.dll」というのが用意されているので、
今回のようなビルドは不要で、それをリンクするだけで使えます。
今回は、この欄にチェックを入れることで、
新たにOpenCV Contrib入りの
「opencv_world430.dll」(opencv_world430d.dll)を新たにビルドし直す、ということになります。
そのほかにも今回はビルド不要なモジュールがあればCMake GUI画面上段から
必要に応じてチェックを外しても構いません。
ビルド環境がセットできたら、再度Configureで読み込み、
「Configure done」を確認します。
最後に、CMake GUI中段の「Generate」をクリックすると、
OpenCVとOpenCV Contribを合わせ込んでビルドするために必要なファイルが生成されます。
コンソールウィンドウに、「Generate done」と表示されたら
ビルド環境の構築は完了です。
③Visual Studioでビルド
CMakeにより無事にGenerateが完了していると、ビルド先フォルダである「opencv_build」には
以下の通り、様々なファイル・フォルダが生成されています。
その中にある、Visual Studioソリューションファイルである
「OpenCV.sln」が生成されていると思いますので、そちらをVisual Studioを使って開きます。
これでビルドするためのプロジェクトが開かれている状態になりました。
早速、バッチビルドでビルドしていきましょう。
ツールバーから「ビルド(B)」→「バッチ ビルド(T)」を選択すると、以下のようなウィンドウが開きます。
ALL_BUILDとINSTALLにチェックでいいのですが、
お好み合わせて、Debug / Releaseのチェックは選んでください。
今回は、両方ともビルドさせます。
チェックが完了したら、「ビルド(B)」をクリックするとビルドが開始します。
マシンスペックにもよると思いますが、約1時間ほどかかります。
気長にお待ちください。
ビルドが完了すると、以下のようになります。
ほぼ正常終了のみでビルドが完了しました。
「opencv_build」フォルダの中をみてみると、
「install」フォルダが生成されており、ビルドファイル一式はこの中に格納されています。
この格納場所は、CMake GUIから変更することも可能です。
「install」フォルダの中には、以下のようになっており、
OpenCVのインクルードディレクトリとなるのが、ここの「include」フォルダです。
中の「opencv2」フォルダの中には、「opencv.hpp」があるのも確認できます。
続いて、今回は、CMake GUIでOpenCV Worldを生成するようにしたので
「install」フォルダの「x64¥vc16¥」の中に生成されています。
OpenCV WorldのDLLは、「bin」フォルダ直下に、LIBは「lib」フォルダ直下にあることがわかります。
バッチビルドの時にDebugとReleaseの両方を指定したので
「opencv_world430.dll」がRelease版で、
「opencv_world430d.dll」がDebug版です。
libも同様です。
最後にこれらの情報をもとに、
パスを通しておきましょう。
環境変数に以下を追加します。
今回は、Cドライブ直下ですべて展開・ビルドを行っているので、別のフォルダでビルドを行っている場合は読み替えてください。
(1)C:¥opencv_build¥install
(2)C:¥opencv_build¥install¥include
(3)C:¥opencv_build¥install¥x64¥vc16¥bin
(1)は、OpenCVConfig.cmakeのありかになります。
インクルードディレクトリと、ライブラリのリンクを環境変数で通しておけばビルドできると思いがちですが、
OpenCVConfig.cmakeをまず読み込ませてあげないと、ビルドが出だしからつまづきます。
(2)がインクルードディレクトリの場所、(3)でライブラリパスを通してあげます。
これでOpenCV + OpenCV Contribを通したビルドは完了です。
おつかれさまでした。
↓↓↓ぜひチェックしてください
~提供中のヒューマンセンシング技術~
◆人物検出技術
歩行者・来店者数計測やロボット搭載も
https://humandetect.pas-ta.io
◆視線検出技術
アイトラッキングや次世代UIに
https://eyetrack.pas-ta.io
◆生体判定技術
eKYC・顔認証のなりすまし対策を!
https://bio-check.pas-ta.io
◆目検出技術
あらゆる目周りデータを高精度に取得
https://pupil.pas-ta.io
◆音声感情認識技術
会話から怒りや喜びの感情を判定
https://feeling.pas-ta.io
◆虹彩認証技術
目の虹彩を利用した生体認証技術
https://iris.pas-ta.io