OpenCV: Build


2018.07.10: created by
Japanese English
目次へ

Windows 10 上でOpenCV 3.4.2 ライブラリをBuildする

Option: OpenCV_contrib 3.4 ライブラリのBuildも行う

https://docs.opencv.org/3.4.2/d3/d52/tutorial_windows_install.html にある Building the library に基いてコンパイルする。


  1. Visual Studio Professional 2017 については現時点の最新バージョン (15.7) にした。
  2. Visual Studio Installer を起動して「更新」をクリックすると自動的に最新版になる。

  3. CMake について現時点の最新版をインストールする。
  4. https://cmake.org/download/でLatest Release (3.11.4) の Binary distribution cmake-3.11.4-win64-x64.msi をダウンロードしてから、実行すればインストールできる。 デフォルトでよいとのことなので"Don't add system PATH" でインストールした。

  5. Antをインストールする。
  6. 公式サイト https://ant.apache.org/ の左側メニューのDownloadから Binary Distributions をクリックして、 apache-ant-1.10.4-bin.zip を選択する。 展開したフォルダを C:\sys\apache\ant に移動して、環境変数 ANT_HOMEにこのパスを設定する。 その上で環境変数のPATHの先頭に

    %ANT_HOME%\bin
    
    という記述を追加する。


  7. github から opencv のソースをダウンロードする。
  8. https://github.com/opencv/opencv から Download ZIP をクリックすると opencv-master.zip が手元にできる。 これを展開して次のフォルダに置いたとする。

      C:\Users\nitta\Documents\opencv\opencv-master
    


  9. [Option: contribもビルドする場合]opencv_contribをダウンロードして展開する。
  10. opencv_contrib もコンパイルしたい場合は https://github.com/opencv/opencv_contrib からダウンロードして、opencv-masterの下に展開する。 C:\Users\nitta\Documents\opencv\opencv-master\opencv-contrib-master



  11. この状態で cmake を起動し、Buildのための設定を行う。
  12. CMakeの画面で

    Where is the source code: C:\Users\nitta\Documents\opencv\opencv-master
    Where to build the binaries: C:\Users\nitta\Documents\opencv\build
    
    と設定する。 buildしたバイナリを置くフォルダは、存在していない場合は新しく生成されるので、 この段階では存在していなくても構わない。 Configure をクリックする。


    Buildするコンパイラを選ぶ画面となるので、 "Specify generator for the project"の欄から "Visual Studio 15 2017 Win64" を選択すること。


    しばらく待つと新しく設定が可能になった項目の背景が赤く表示される。


  13. opencvのライブラリは opencv_worldXXX.lib にまとめたいので、 BUILD_opencv_world の項目をチェックしておくこと。


  14. [Option: contribもビルドする場合] OPENCV_EXTRA_MODULES_PATH にソースファイルの下の opencv_contrib-master/modules を設定する。
  15.   C:\Users\nitta\Documents\opencv\opencv-master\opencv_contrib-master\modules
    

  16. CMake で設定を変更したので再びConfigureをクリックする。

  17. [Option: opencv_contribの同時にビルドする場合] opencv_contrib のモジュールを追加したので、それらに対する 設定項目が新しく設定可能になったので赤の背景で表示されるようになる。 そのまま、もう一度Configure をクリックする。

  18. すべての項目の背景が白くなったので、この状態で Generate をクリックする。 ビルドの準備が行われて opencv_master/OpenCV.sln が生成される

  19. build用フォルダに OpenCV.sln が生成されているので、これを Explorer 上でクリックして、Visual Studio 2017 を起動する。

  20. Visual Studio 2017 の画面で、ターゲットアーキテクチャが x64 に なっていることを確認する。 コンパイルオプションを Debug からRelease に変更する。

  21. Visual Studio 2017 のソリューションエクスプローラーで CMakeTargets の下の INSTALL を選択して、 メニューから「ビルド」-> 「INSTALLのビルド」を選択する。

  22. ビルドが無事に終了した場合は、buildフォルダの下に install という フォルダが生成されていて、その中にビルド結果が入っている。
  23. 生成された bin, lib, include を所定の場所に移動しておくこと。
  24. build/install/x64/vc15/bin  --> C:\opencv\bin
    build/install/x64/vc15/lib  --> C:\opencv\lib
    build/install/include       --> C:\opencv\include
    

  25. システムの環境変数の PATH にopencvのbinへのパスを設定しておく。
  26. C:\opencv\bin


Tips

  1. CMake で最初に Configure をクリックしたときに指定する "Specify generator for the project"の欄、すなわちCompiler のデフォルトは "Visual Studio 15 2017"だが "Visual Studio 15 2017 Win64" を選択すること。 OpenCV.sln を作成した後で Visual Studio 2017 でコンパイルする段階で変更してもうまくいかない。
  2. Antが必須かどうかは不明。まぁ、あった方がbetterなわけで、インストールしておくことを勧める。
  3. OpenCLがらみでビルドが失敗するシステムがあった
  4. プロジェクト "opencv_test_dnn.vcxproj" のビルドが終了しました -- 失敗。
    

    OpenCL ライブラリを使わない設定にしたら、とりあえずコンパイルできるようになった。

    OPENCL_FOUND         ✔  -> □
    OPENCL_DNN_OPENCL    ✔  -> □
    WITH_OEPNCL          ✔  -> □
    WITH_OEPNCLAMDBLAS   ✔  -> □
    WITH_OPENCLAMDFFT    ✔  -> □
    WITH_OEPNCL_SVM      □  -> □
    

    どうもANTの実行可能ファイルが見つからないのが原因のようだ。 PATHに ANT_HOME 変数を使うのではなく、全部書き下したパスを設定した。 ANT_EXECUTABLE が見える状態で Configure, Generate, Visual Studio 2017 (x64) でのBuildは OpenCLを設定していても通った。

  5. Debug, x64でコンパイルすると opencv_python のビルドで失敗するシステムがあった。
  6. 少し古い Anaconda 3 がインストールされている Windows10で次のようなエラーがでた。

    56>LINK : fatal error LNK1104: ファイル 'python36_d.lib' を開くことができません。
    56>プロジェクト "opencv_python3.vcxproj" のビルドが終了しました -- 失敗。
    
    C:\ProgramData\Anaconda3\libs\python36.lib はあるがpython36_d.lib は存在しない。 Release, x64 でビルドすると通った。 Anacondaのバージョンは関係なかったようだ。


Yoshihisa Nitta

http://nw.tsuda.ac.jp/