Open3

OpenMVGとOpenMVSのdockerを作る

kenfukukenfuku

docker イメージの作り方は 1) Dockerfile から作る 2) コンテナを作ってイメージにする の二通りがある。今回は後者で試す。

以下のページを参考に実装する
https://qiita.com/fujin/items/d816a7e9b8c2577a7e37

環境構築

ベースイメージは Ubuntu:20.04 を利用する。

最初に以下を実行する

apt update
apt upgrade

apt install build-essential tar curl zip unzip vim git

OpenMVG と Meshlab のインストールはリンクを参考に行う。
OpenMVS のインストールが少し面倒。以下に記述していく。

OpenMVS

参考リンクのOpenMVSの環境構築のvcpkgを用いた方法を記載していく

vcpkg

c++のビルド用にパッケージを入れる。

apt install gcc g++ cmake make

以下から vcpkg をビルドする。
https://github.com/Microsoft/vcpkg#quick-start-unix

vcpkg は vcpkg 以下のディレクトリに c++ パッケージをインストールしているようである。
コマンドは以下

# インストール
./vcpkg install [package]
# 検索
./vcpkg search [package]
# 削除
./vcpkg remove [package]

eigen3

./vcpkg install eigen3

エラー発生。bison ? とpkg-config? というライブラリがいるらしい。

apt install bison pkg-config
./vcpkg install eigen3

opencv4

./vcpkg install opencv4

エラー発生。 distutils ? が必要。

apt install python3-distutils
./vcpkg install opencv4

エラー発生。xtst が必要

apt install libxtst-dev
./vcpkg install opencv4

cgal

./vcpkg install cgal

エラー発生. autocomf が必要

apt install autoconf
./vcpkg install cgal

エラー発生。libtoolが必要?

apt install libtool
./vcpkg install cgal

boost

./vcpkg install boost

エラー発生。autoconf-archive が必要。

apt install autoconf-archive 
./vcpkg install boost

VCG

./vcpkg install vcglib

OpenMVS

#Clone OpenMVS
git clone --recurse-submodules https://github.com/cdcseacave/openMVS.git

#Make build directory:
cd openMVS
mkdir make
cd make

#Run CMake:
cmake -DCMAKE_TOOLCHAIN_FILE=[path to vcpkg]/scripts/buildsystems/vcpkg.cmake ..

エラー発生。glew のインストールがうまく行かない。

apt instal l libxmu-dev libxi-dev libgl-dev
cmake -DCMAKE_TOOLCHAIN_FILE=[path to vcpkg]/scripts/buildsystems/vcpkg.cmake -DOpenMVS_USE_CUDA=OFF ..

エラー発生。glfw3 のビルド中

 ./vcpkg install libxinerama --recurse
cmake -DCMAKE_TOOLCHAIN_FILE=[path to vcpkg]/scripts/buildsystems/vcpkg.cmake -DOpenMVS_USE_CUDA=OFF ..

エラー発生。glfw3のビルド中
The Xinerama headers were not found

apt install xorg-dev
cmake -DCMAKE_TOOLCHAIN_FILE=[path to vcpkg]/scripts/buildsystems/vcpkg.cmake -DOpenMVS_USE_CUDA=OFF ..

cmake 成功

次は "cmake --build"

cmake --build . -j4

エラー発生。GL/glu.h: No such file or directory.

apt install libglu1-mesa-dev
cmake --build . -j4

成功

kenfukukenfuku

チュートリアルを勧めていたが scean.mvs -> plyに変換する時に以下のエラーが発生。
https://github.com/cdcseacave/openMVS/issues/474

構築しなおし。

cmake -DOpenMVS_USE_CUDA=OFF -DCMAKE_TOOLCHAIN_FILE=/workspace/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD=Release .. 

成功

cmake --build . -j4

同一エラーが発生。 DCMAKE_BUILD=ReleaseDCMAKE_BUILD_TYPE=Release に変更

cmake -DOpenMVS_USE_CUDA=OFF -DCMAKE_TOOLCHAIN_FILE=/workspace/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD=Release .. 
cmake --build . -j4

成功。
チュートリアルも成功

kenfukukenfuku

まとめ

# docker container creating
docker run -it -d --name sfm ubuntu:20.04
docker exec -it sfm bash
sudo apt update
sudo apt upgrade

apt install build-essential tar curl zip unzip vim git
apt install gcc g++ cmake make

apt install python3.8

# vcpkg
mkdir /workspace && cd /workspace
git clone https://github.com/microsoft/vcpkg
cd /workspace/vcpkg && ./bootstrap-vcpkg.sh

# eigen3
apt install bison
./vcpkg install eigen3

# opencv4
apt install python3-distutils libxtst-dev
./vcpkg install opencv4

# cgal
apt install autoconf libtool
./vcpkg install cgal

# boost
apt insall autoconf-archive
./vcpkg install boost

# vcglib
./vcpkg install vcglib

# OpenMVS build
apt install libxmu-dev libxi-dev libgl-dev xorg-dev libglu1-mesa-dev
./vcpkg instal libxinerama --recurse

cd /workspace
git clone --recurse-submodules https://github.com/cdcseacave/openMVS.git
cd openMVS
mkdir make
cd make
cmake \ 
  -DOpenMVS_USE_CUDA=OFF \
  -DCMAKE_TOOLCHAIN_FILE=/workspace/vcpkg/scripts/buildsystems/vcpkg.cmake \ 
  -DCMAKE_BUILD=Release \
  .. 
cmake --build . -j4