OpenCV中的模块:三维重建-SFM(1)

本文介绍了如何在Ubuntu环境下编译OpenCV的SFM模块,涉及Ceres Solver的安装与配置,以及OpenCV的编译选项。在遇到编译和运行时的问题时,提供了解决方案,包括解决找不到'reconstruct'函数和链接错误的方法,并展示了测试代码和图像的使用。
摘要由CSDN通过智能技术生成

        在三维重建中,运动中恢复结构(SFM)可以用来重建目标的稀疏点云并为后续的稠密重建提供相对精度更高的种子点。笔者在三维重建的相关工作中除了采用结构光(线激光和条纹光等)外,还使用过OpenMVG + C/PMVS和COLMAP等。在浏览OpenCV contrib模块时发现OpenCV也可实现SFM,基于兴趣这里也编译学习了一下。同样,笔者会在Ubuntu下和windows下分别编译及测试,但是由于篇幅问题,windows下的编译将在下一篇讲解。

1. 依赖库的安装  

        Ubuntu下的编译相对简单,主要是一些依赖库的安装,尤其是注意Ceres的安装。如果不安装Ceres,则重建功能将被禁用。

#安装依赖库

sudo apt-get install libgoogle-glog-dev

sudo apt-get install libatlas-base-dev

sudo apt-get install libeigen3-dev

sudo apt-get install libsuitesparse-dev
 

#编译、测试及安装Ceres

git clone https://github.com/ceres-solver/ceres-solver.git

cd ceres-solver

mkdir build && cd build

cmake ..

make -j4

make test

sudo make install

如果按照上述命令行,可能报错:

error: ‘integer_sequence’ is not a member of ‘std’

 这是因为最新版的ceres使用了C++14标准,需要在上述步骤中CMake中修改C++编译标准。

cmake -DCMAKE_CXX_STANDARD=14 ..

       当然,也可以回退版本:至少需要将ceres回退2.0以下,Eigen回退到3.3以下,此外,还可能需要回退其他库。

2. OpenCV的编译。

        注意:上一步的库已经被安装到Ubuntu的环境中,在编译OpenCV库时注意查看viz和sfm是否打开,或者直接打开。

cmake -DWITH_VTK=ON -DBUILD_opencv_sfm=ON ..

然后 make --> sudo make install 即可。如果没有将相关依赖安装到ubunt

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值