openMVG(open Multiple View Geometry)是一款经典的开源三维重建算法库。本文主要介绍再Linux系统中OpenMVG库的安装编译方法。
代码地址:github
官方文档:DOC
安装步骤如下:
1、下载源码,一种方式是使用git clone 下载,另外一种是直接download zip,推荐前者,后者无法完整的下载依赖的库文件,导致编译失败。recursive可以递归的下载依赖的库。
git clone --recursive https://github.com/openMVG/openMVG.git
下载完成后,请务必确认dependencies文件夹中的这三个文件夹不为空!
否则编译时会报错:submodule(s) are missing“或“子模块未对路径注册。解决办法:博客,或者单独git clone下载失败的那个库,并放到对应的文件夹中。
2、依赖库安装
sudo apt-get install libpng-dev libjpeg-dev libtiff-dev libxxf86vm1 libxxf86vm-dev libxi-dev libxrandr-dev
sudo apt-get install graphviz
当然算法还依赖Eigen3.4.0,ceres-solver等库,自行安装即可。
3、编译
创建文件夹,并把下载的源码放到文件夹中。使用cmake编译,如果没意外的话,就编译成功了。
mkdir openMVG_Build && cd openMVG_Build
cmake -DCMAKE_BUILD_TYPE=RELEASE -DOpenMVG_BUILD_TESTS=ON -DOpenMVG_BUILD_EXAMPLES=ON . ../openMVG/src/
make
4、报错解决
(1)submodule(s) are missing
解决办法:lianqi1008的博客。
(2)Eigen版本过低
报错信息:
/usr/include/eigen3/Eigen/SparseCholesky:34:2: error: #error The SparseCholesky module has nothing to offer in MPL2 only mode
#error The SparseCholesky module has nothing to offer in MPL2 only mode
解决办法:重装/升级eigen,或者修改Cmakelist文件280行。本人采用的是后者,毕竟Eigen库其他算法也在用,升级版本可能导致其他算法编译失败。修改如下,让它使用自带的Eigen库,而不使用系统的Eigen。