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

运动中恢复结构(SFM)可以用来重建目标的稀疏点云并为后续的稠密重建提供相对精度更高的种子点,也可以用于里程计等估计相机本身的位姿。同样,除了采用结构光进行三维重建外,还使用过OpenMVG + C/PMVS和COLMAP。在浏览OpenCV contrib模块时发现OpenCV也可实现MVG,高低得编译学习一下。同样,这里分为Ubuntu下的和windows下的编译及测试。

1. Ubuntu下编译带有SFM的OpenCV库

1.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标准,需要修改C++编译标准,

CMAKE_CXX_STANDARD

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

1.2 OpenCV的编译。

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

cmake -DWITH_VTK=ON -DBUILD_opencv_sfm=ON ..

然后 make --> sudo make install 即可。如果没有将相关依赖安装到ubuntu,而是在某些文件夹之下,就需要填写库的路径,即将路径赋值对对应的xxx_DIR。

如果之前没有编译OpenCV + Contrib,则完整的编译命令可参考:

mkdir build && cd build

cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=./install -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules -DWITH_VTK=ON

-DBUILD_opencv_sfm=ON -DCMAKE_CXX_STANDARD=11 ..

make -j4

sudo make insatll

sudo ldconfig

相关推荐
桃西西呀1 分钟前
饭桌上又卡壳了?我用 TRAE 写了个嘴替鸭,把回话提前备好
人工智能·llm·ai编程
袋鼠云数栈2 分钟前
让 SQL 解析不再重复造轮子:SqlParserX 正式开源
数据库·人工智能·sql·开源·数据治理
kyriewen7 分钟前
我让 AI 当候选人面了一轮:居然一个问题都没问倒它
人工智能·程序员·ai编程
月与清酒14 分钟前
2026年10月AI大模型全景对比:GPT-6、Claude 5.5、Gemini 4、DeepSeek V4.1到底差在哪
人工智能·gpt·ai
来自于狂人21 分钟前
AI前沿速递|AI自己“进化“操作界面干翻GPT-5.5!8B“流体模型“提速2.54倍,清华让Agent学会“收拾记忆“成本直降28%
人工智能·gpt
科技看点说38 分钟前
AI画面不廉价:质感的三层来源详解
人工智能
秦先生在广东1 小时前
Agentic Awesome Skills 解析:构建本地优先的 Agent 技能控制平面
人工智能
径硕科技JINGdigital1 小时前
企业搭建 AI 模型网关,该选择哪些支持多模型接入与统一治理的平台?
人工智能
甲维斯1 小时前
国产Flash大乱斗【1】:DS和MiniMax挺起胸膛!
人工智能
阿里云大数据AI技术1 小时前
StarRocks × Paimon C++:加速湖上数据分析
大数据·人工智能