安装流程:
建议参考官网流程:Installation — COLMAP 3.9-dev documentation
安装前的准备
安装依赖项:
sudo apt-get install \
git \
cmake \
ninja-build \
build-essential \
libboost-program-options-dev \
libboost-filesystem-dev \
libboost-graph-dev \
libboost-system-dev \
libeigen3-dev \
libflann-dev \
libfreeimage-dev \
libmetis-dev \
libgoogle-glog-dev \
libgtest-dev \
libsqlite3-dev \
libglew-dev \
qtbase5-dev \
libqt5opengl5-dev \
libcgal-dev \
libceres-dev
要使用CUDA 支持进行编译,还需安装 Ubuntu 的默认 CUDA 包:
sudo apt-get install -y \
nvidia-cuda-toolkit \
nvidia-cuda-toolkit-gcc
不同系统可能遇到的问题
在Ubuntu 22.04下,使用 Ubuntu 默认的 CUDA 包和 GCC 编译时出现问题,必须针对 GCC 10 进行编译:
sudo apt-get install gcc-10 g++-10
export CC=/usr/bin/gcc-10
export CXX=/usr/bin/g++-10
export CUDAHOSTCXX=/usr/bin/g++-10
在Ubuntu 16.04/18.04下,CGAL 的 CMake 配置脚本已损坏,您还必须安装 CGAL Qt5 软件包:
sudo apt-get install libcgal-qt5-dev
安装colmap
git clone https://github.com/colmap/colmap.git#下载源码
cd colmap
git checkout dev #这一步可以报错省略,最近的版本作者删掉了dev,所以会检验不通过
mkdir build
cd build
cmake ..
make -j16 #使用16个线程编译
sudo make install
cmake编译时遇到的问题1
解决办法:找到colmap/src/colmap/util/misc.h文件
在#include <boost/filesystem.hpp>之前添加:
#define BOOST_BIND_GLOBAL_PLACEHOLDERS
如下面所示:
#pragma once
#include "colmap/util/endian.h"
#include "colmap/util/logging.h"
#include "colmap/util/string.h"
#include <fstream>
#include <iostream>
#include <string>
#include <vector>
#define BOOST_BIND_GLOBAL_PLACEHOLDERS
#include <boost/filesystem.hpp>
报错的原因:使用了Boost库,但其中的某些用法已被标记为不推荐使用,需要进行修改。使用全局命名空间中的Boost绑定占位符的做法不再建议使用。
问题2
undefined reference to `TIFFReadEncodedStrip@LIBTIFF_4.0`
undefined reference to `TIFFReadEXIFDirectory@LIBTIFF_4.0`
undefined reference to `TIFFFieldReadCount@LIBTIFF_4.0`
undefined reference to `TIFFSetTagExtender@LIBTIFF_4.0`
undefined reference to `TIFFCurrentDirectory@LIBTIFF_4.0`
undefined reference to `TIFFReadTile@LIBTIFF_4.0`
undefined reference to `TIFFSetDirectory@LIBTIFF_4.0`
undefined reference to `TIFFClientOpen@LIBTIFF_4.0`
解决方法:修改如果预先安装了anaconda会发生冲突,最简单的方法是修改anaconda的安装路径 名字,等colmap安装完之后再将文件夹名改回。例如我的anaconda安装在/anaconda3路径下,修改anaconda的安装路径 :
#修改anaconda3 的安装路径名,使系统识别不到anaconda3即可
#我这里直接在名字后面加了1
sudo mv /anaconda3 /anaconda31
问题3:
CMake Error at CMakeLists.txt:255 (message):
You must set CMAKE_CUDA_ARCHITECTURES to e.g. 'native', 'all-major', '70',
etc. More information at
https://cmake.org/cmake/help/latest/prop_tgt/CUDA_ARCHITECTURES.html
解决方法:将之前的cmake .. 后添加-DCMAKE_CUDA_ARCHITECTURES='86':
cmake .. -DCMAKE_CUDA_ARCHITECTURES='86'
注:具体的数字可以有自己显卡型号决定,参考You must set CMAKE_CUDA_ARCHITECTURES to e.g. ‘native’, ‘all-major’, ‘70’_JoannaJuanCV的博客-CSDN博客