Skip to content

Instantly share code, notes, and snippets.

@cdcseacave
Last active July 7, 2022 12:35
Show Gist options
  • Save cdcseacave/ef290eacefa44db67dadaed01a6fe319 to your computer and use it in GitHub Desktop.
Save cdcseacave/ef290eacefa44db67dadaed01a6fe319 to your computer and use it in GitHub Desktop.
Build latest OpenMVG+OpenMVS+COLMAP in docker

Build by downloading Dockerfile locally and running: docker build -t="open_photogrammetry" .

Run by pointing to the input images folder and the output folder: docker run --name photogrammetry --rm -v <images-folder>:/images -v <work-folder>:/work -it open_photogrammetry python3 /opt/bin/MvgMvsPipeline.py /images /work

FROM ubuntu:20.04
# Get dependencies
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
cmake \
build-essential \
graphviz \
git \
coinor-libclp-dev \
libceres-dev \
libjpeg-dev \
libpng-dev \
libtiff-dev \
libxi-dev \
libxinerama-dev \
libxcursor-dev \
libxxf86vm-dev; \
apt-get autoclean && apt-get clean
# Boost
RUN apt-get -y install libboost-iostreams-dev libboost-program-options-dev libboost-system-dev libboost-serialization-dev
# CGAL
RUN apt-get -y install libcgal-dev libcgal-qt5-dev
#GLFW3 (Optional)
RUN apt-get -y install freeglut3-dev libglew-dev libglfw3-dev
# Install COLMAP dependencies
RUN DEBIAN_FRONTEND=noninteractive apt-get -y install \
libboost-program-options-dev \
libboost-filesystem-dev \
libboost-graph-dev \
libboost-regex-dev \
libboost-system-dev \
libboost-test-dev \
libeigen3-dev \
libsuitesparse-dev \
libfreeimage-dev \
libgoogle-glog-dev \
libgflags-dev \
libglew-dev \
qtbase5-dev \
libqt5opengl5-dev
# Build latest COLMAP
RUN git clone https://github.com/colmap/colmap.git --branch dev; \
mkdir comap_build && cd comap_build; \
cmake . ../colmap -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="/opt"; \
make -j4 && make install; \
cd .. && rm -rf comap_build
# OpenCV
RUN DEBIAN_FRONTEND=noninteractive apt-get install -yq libopencv-dev
# Build latest openvMVG
RUN git clone --recursive https://github.com/openMVG/openMVG.git --branch develop; \
mkdir openMVG_build && cd openMVG_build; \
cmake -DCMAKE_BUILD_TYPE=RELEASE \
-DCMAKE_INSTALL_PREFIX="/opt" \
-DOpenMVG_BUILD_TESTS=OFF \
-DOpenMVG_BUILD_EXAMPLES=OFF \
-DOpenMVG_BUILD_DOC=OFF \
-DOpenMVG_BUILD_OPENGL_EXAMPLES=ON \
-DOpenMVG_USE_OPENCV=ON \
-DOpenMVG_USE_OCVSIFT=OFF \
-DCOINUTILS_INCLUDE_DIR_HINTS=/usr/include \
-DCLP_INCLUDE_DIR_HINTS=/usr/include \
-DOSI_INCLUDE_DIR_HINTS=/usr/include \
-DEIGEN_INCLUDE_DIR_HINTS=/usr/include/eigen3 \
../openMVG/src; \
make -j 4 && make install; \
cp ../openMVG/src/openMVG/exif/sensor_width_database/sensor_width_camera_database.txt /opt/bin/; \
cd .. && rm -rf openMVG_build
# Eigen (Known issues with eigen 3.3.7 as of 12/10/2019, so using this tested branch/commit instead)
RUN git clone https://gitlab.com/libeigen/eigen --branch 3.2; \
mkdir eigen_build && cd eigen_build; \
cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX="/usr/local/include/eigen32" . ../eigen; \
make && make install; \
cd .. && rm -rf eigen_build
# VCGLib
RUN git clone https://github.com/cdcseacave/VCG.git vcglib
# Build latest openMVS
RUN git clone https://github.com/cdcseacave/openMVS.git --branch develop; \
mkdir openMVS_build && cd openMVS_build; \
cmake . ../openMVS -DCMAKE_BUILD_TYPE=Release \
-DVCG_ROOT=/vcglib \
-DEIGEN3_INCLUDE_DIR=/usr/local/include/eigen32/include/eigen3 \
-DCMAKE_INSTALL_PREFIX="/opt"; \
make -j4 && make install; \
cp ../openMVS/MvgMvsPipeline.py /opt/bin/; \
cd .. && rm -rf openMVS_build
# Install cmvs-pmvs
RUN git clone https://github.com/pmoulon/CMVS-PMVS cmvs-pmvs; \
mkdir cmvs_pmvs_build && cd cmvs_pmvs_build; \
cmake ../cmvs-pmvs/program -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt; \
make -j4 && make install; \
cd .. && rm -rf cmvs_pmvs_build
# Add binaries to path
ENV PATH $PATH:/opt/bin:/opt/bin/OpenMVS
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment