最近实验室在搞三维重建的项目,要在服务器上安装Colmap+OpenMVS环境,参考github、博客、官网给出较为完整的安装流程。
注意安装之前确保服务器上没有安装anaconda,否则在编译时会找anaconda的路径而报错。
先说一下各项依赖的版本: 1.colmap-3.5 2.ceres-slover 1.4.1 3.eigen3.3.7 4.cmake3.13 5.opencv-4.5.2 6.vcglib 7.openMVS
按照官网安装http://colmap.github.io/install.html
#git 和 cmake单独安装,这里安装的cmake版本为3.5.1,版本较低会编译报错 sudo apt-get install \ build-essential \ libboost-program-options-dev \ libboost-filesystem-dev \ libboost-graph-dev \ libboost-system-dev \ libboost-test-dev \ libeigen3-dev \ libsuitesparse-dev \ libfreeimage-dev \ libgoogle-glog-dev \ libgflags-dev \ libglew-dev \ qtbase5-dev \ libqt5opengl5-dev \ libcgal-dev
sudo apt-get install libcgal-qt5-dev
https://ceres-solver.googlesource.com/ceres-solver
sudo apt-get install libatlas-base-dev libsuitesparse-dev # git clone https://ceres-solver.googlesource.com/ceres-solver # 手动下载1.14版本,解压 cd ceres-solver # git checkout $(git describe --tags) # Checkout the latest release mkdir build cd build cmake .. -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF make -j sudo make install
git clone https://github.com/colmap/colmap.git cd colmap # git checkout dev mkdir build cd build cmake .. make -j sudo make install
按照github教程安装
https://github.com/cdcseacave/openMVS/blob/master/BUILD.md
sudo apt-get update -qq && sudo apt-get install -qq # 手动安装更高版本的cmake sudo apt-get -y install libpng-dev libjpeg-dev libtiff-dev libglu1-mesa-dev main_path=`pwd` # 具体路径
git clone https://gitlab.com/libeigen/eigen.git --branch 3.3.7 mkdir eigen_build && cd eigen_build cmake . ../eigen make && sudo make install cd ..
sudo apt-get -y install libboost-iostreams-dev libboost-program-options-dev libboost-system-dev libboost-serialization-dev
# sudo apt-get -y install libopencv-dev # 这里安装的opencv版本较低,为2.4.9,在编译OpenMVS时会报opencv相关的错误 # 可以查看issue:https://github.com/cdcseacave/openMVS/issues/614
报错信息cv::Matx_DivOp’ has not been declared
[ 3%] Building CXX object libs/Common/CMakeFiles/Common.dir/CUDA.cpp.o In file included from /home/bjfu/software/openMVS/libs/Common/Common.h:176:0, from /home/bjfu/software/openMVS/libs/Common/CUDA.cpp:8: /home/bjfu/software/openMVS/libs/Common/Types.h:1488:70: error: ‘cv::Matx_DivOp’ has not been declared TMatrix(const TMatrix<TYPE,m,n>& a, const TMatrix<TYPE,m,n>& b, cv::Matx_DivOp) : Base(a, b, cv::Matx_DivOp()) {} ^ /home/bjfu/software/openMVS/libs/Common/Types.h: In constructor ‘SEACAVE::TMatrix<TYPE, m, n>::TMatrix(const SEACAVE::TMatrix<TYPE, m, n>&, const SEACAVE::TMatrix<TYPE, m, n>&, int)’: /home/bjfu/software/openMVS/libs/Common/Types.h:1488:95: error: ‘Matx_DivOp’ is not a member of ‘cv’ TMatrix(const TMatrix<TYPE,m,n>& a, const TMatrix<TYPE,m,n>& b, cv::Matx_DivOp) : Base(a, b, cv::Matx_DivOp()) {} ^
# 这两个依赖前面已经加过了 sudo apt-get -y install libcgal-dev libcgal-qt5-dev
git clone https://github.com/cdcseacave/VCG.git vcglib
# 前面已经安装好了
sudo apt-get -y install freeglut3-dev libglew-dev libglfw3-dev
git clone https://github.com/cdcseacave/openMVS.git openMVS mkdir openMVS_build && cd openMVS_build cmake . ../openMVS -DCMAKE_BUILD_TYPE=Release -DVCG_ROOT="$main_path/vcglib" #If you want to use OpenMVS as shared library, add to the CMake command: -DBUILD_SHARED_LIBS=ON #Install OpenMVS library (optional): make -j2 && sudo make install
参考博客:
https://blog.csdn.net/X_kh_2001/article/details/83690094
https://segmentfault.com/a/1190000022276314
https://www.cnblogs.com/gtx159/p/10825877.html