embeddedなブログ

組み込みシステムに関することや趣味に関することをダラダラと書いていきます(^^)

COLMAPをVisual Studio 2017(x64)でビルドする

2019-03-08 10:30:53 | Windows Embedded Standard

以前に紹介したOpenMVGと同様、COLMAPもSfMというアルゴリズムを用いて写真画像から三次元点群データを生成するツールです。このCOLMAPはバイナリ提供されているのですが、GitHubにソースコードも公開されています。今日はこのCOLMAPをVisual Studio 2017を用いてWindows 10 64bit用モジュールのビルドに挑戦してみたいと思います。

COLMAPのビルド方法はここを参考にしました。

COLMAPのビルドに入る前にCGALをインストールしておく必要があります。 ここを参考にCGALをインストールしていきます。

まず、Qt5をインストールします。ここからダウンロードします。私の場合は qt-opensource-windows-x86-5.12.1.exe をダウンロードして実行しました。注意すべき画面だけを説明しますので、それ以外の画面は省略します。

私は特に何も入力せず[Skip]をクリックしました。

Qt5のインストール先ディレクトリを指定します。私の場合は、上記のように"C:\Qt\Qt5.12.1"を指定しました。

インストールするコンポーネントを指定します。今回はVisual Studio 2017 64bitでCOLMAPをビルドしたいので、"MSVC 2017 64bit"のみを指定しました。

次に、Boostをインストールします。ここからインストーラをダウンロードします。私の場合は、boost_1_69_0-msvc-14.1-64.exe をダウンロードして実行しました。

 

Boostをインストールするフォルダを指定します。私の場合は、"C:\lboost\"フォルダを指定しました。インストールが終わったら下記の環境変数を設定します。

  • BOOST_LIBRARYDIR=C:\lboost\lib64-msvc-14.1
  • BOOST_INCLUDEDIR=C:\lboost
  • PATHに "C:\lboost\lib64-msvc-14.1" を追加

そして、CGALのインストールです。ここからCGALのインストーラをダウンロードします。私の場合は、CGAL-4.13-Setup.exe をダウンロードして実行しました。

特に設定は変えずにそのまま[Next]をクリックしました。

64bitを選択します。

インストール先フォルダを指定します。私はデフォルトのまま"C:\dev\CGAL-4.13" を指定しました。

インストール中に上記のようなエラーが出た場合は、手動で環境変数PATHに "C:\dev\CGAL-4.13\auxiliary\gmp\lib" を追加してください。

インストールが終わったらCMake-guiを起動します。source code に "C:\dev\CGAL-4.13"、build 先に "C:\dev\CGAL-4.13\build" を指定して、[configure]をクリックします。

generatorに"Visual Studio 15 2017 Win64"を選択します。

上記のように無事に「Configuration done」と表示されたら、次に[generate]をクリックします。

上記のように無事に「Generating done」と表示されたら[open project]をクリックします。しばらくするとVisual Studio 2017が起動します。デフォルトで選択されている"ALL_BUILD"をビルドするので、特に何も設定を変えずにメニューから[ビルド]-[ソリューションのビルド]を実行して、ビルドを開始します。念のため「Debug」と「Release」の両方でビルドをします。

エラーもなく無事にビルドが終了すれば、環境変数PATHに "C:\dev\CGAL-4.13\build\bin" を追加します。

以上でCGALのインストールは完了です。それでは、ようやく、ここからCOLMAPのビルドに入ります。まず、事前準備が3点あります。

  1. CMakeの実行ファイルにパスが通っていることを確認します。通っていない場合は、環境変数PATHにCMakeの実行ファイルへのパスを追加します。デフォルトでは"C:\Program Files\CMake\bin"になっています。CMakeをインストールする際、推奨ではパスを通さない方なので、パスの追加は必要な場合が多いと思います。
  2. Pythonをインストールしておいてください。PythonスクリプトでCMakeを実行するためです。私の場合はAnaconda(https://www.anaconda.com/distribution/)をインストールすることでPythonを導入しています。
  3. ビルド中もインターネットに接続した状態にしておいてください。PythonスクリプトでCMakeを実行中にEigenなどのダウンロードと展開が実行されます。

実際のビルド作業に入ります。まず、COLMAPのGit(https://colmap.github.io/install.html)からC:\Git にクローンします。

Pythonを実行するためにAnaconda Promptを起動して、カレントディレクトリを C:\Git\colmapに移動します。

そして、Anaconda Promptにて以下コマンドを実行すると、CMake実行が始まります。--cuda_path にはCUDA Toolkitのインストール先ディレクトリを指定します。最新のものでなければVisual Studio 2017に対応していない可能性があるので注意してください。
python .\scripts/python/build.py --build_path "C:/Git/colmap/build" --colmap_path "C:/Git/colmap" --boost_path "C:/lboost/lib64-msvc-14.1" --qt_path "C:/Qt/Qt5.12.1/5.12.1/msvc2017_64" --cuda_path "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.1" --cgal_path "C:/dev/CGAL-4.13/build" --cmake_generator "Visual Studio 15 2017 Win64"

実行には30分程度かかりました。

以上でやっとCMakeが完了です。無事にエラーも無く終わることを祈ります。

Visual Studioのソリューションファイルは "C:\Git\colmap\build\colmap\__build__\COLMAP.sln"に生成されていますので、ダブルクリックしてVisual Studioを開きます。デフォルトで選択されている"ALL_BUILD"のままでReleaseビルドを選択します。[ビルド]-[ソリューションのビルド]を実行します。エラーが発生せずビルドが完了したら、ソリューションウィンドウで"INSTALL"を選択し、右クリックで[ビルド]を実行します。

"C:\Git\colmap\build\__install__\COLMAP.bat" をテキストエディタで開きます。以下の修正を行い上書き保存します。

変更前: set PATH=%SCRIPT_PATH%\lib;%PATH%
変更後: set PATH=%SCRIPT_PATH%\lib;%SCRIPT_PATH%\lib64\lapack_blas_windows;%PATH%

新たにコマンドプロンプトを起動して、カレントディレクトリを "C:\Git\colmap\build\__install__" に移動します。そこで "COLMAP.bat" を実行すればCOLMAPが起動します。

以上でCOLMAPのビルドは完了です。


最新の画像もっと見る