OpenMVG OpenMVS 安装全流程常见问题与解决方法总结
OpenMVG & OpenMVS 安装全流程常见问题与解决方法总结
前言
OpenMVG 和 OpenMVS 是三维重建领域常用的开源工具链。由于依赖众多、对编译环境要求较高,很多用户在源码或 Docker 安装过程中会遇到各种各样的坑。本文结合实际踩坑经历,系统总结了 OpenMVG 和 OpenMVS 安装过程中的常见报错、原因分析及解决方法,帮助大家高效避坑、顺利搭建环境。
一、OpenMVG 安装常见问题
1. 依赖包缺失
报错示例:
The following required packages were not found:- libjxl
解决方法:
sudo apt-get update
sudo apt-get install libjxl-dev
如遇其它依赖缺失,按提示安装相应 -dev
包。
2. rerun_sdk 下载失败
报错示例:
Each download failed!
Failed to connect to github.com port 443 after ...: Connection timed out
原因分析:
- 国内网络无法访问 GitHub
- Docker 构建环境无外网
解决方法:
- 在能联网的环境手动下载
rerun_cpp_sdk.zip
。 - 将其放到 CMake 期望的目录(如
/opt/openMVG_Build/_deps/rerun_sdk-subbuild/rerun_sdk-populate-prefix/src/
)。 - Dockerfile 里用
COPY
指令复制到该目录。
3. Python3 找不到
报错示例:
Could not find a package configuration file provided by "Python3" ...
原因分析:
- CMake 版本过低(如 Ubuntu 18.04 默认 CMake 3.10)
- 缺少
python3-dev
、python3-distutils
等包
解决方法:
- 安装新版 CMake(推荐 3.18+):
wget https://github.com/Kitware/CMake/releases/download/v3.22.6/cmake-3.22.6-linux-x86_64.sh sudo sh cmake-3.22.6-linux-x86_64.sh --skip-license --prefix=/usr/local
- 安装 Python3 相关开发包:
sudo apt-get install python3 python3-dev python3-pip python3-distutils python3-venv
二、OpenMVS 安装常见问题
1. GCC/CUDA 版本不兼容
报错示例:
error: ‘_Float64x’ was not declared in this scope; did you mean ‘_Float16’?
原因分析:
- CUDA 12.2 及以下不支持 GCC 12/13
- 新版 Ubuntu(如 24.04)自带 GCC 13,导致 CUDA 编译失败
解决方法:
- 安装并切换到 GCC 11 或 10:
sudo apt-get install gcc-11 g++-11 export CC=/usr/bin/gcc-11 export CXX=/usr/bin/g++-11
- 推荐环境:Ubuntu 22.04 + GCC 11 + CUDA 11.8/12.2
2. OpenCV 版本过低
报错示例:
error: ‘IMWRITE_JPEGXL_QUALITY’ is not a member of ‘cv’
原因分析:
- OpenCV 4.7.0 及以上才支持 JPEG XL 相关宏,apt 安装的通常是 4.5.x/4.6.x
解决方法:
- 源码编译 OpenCV 4.7.0+,或
- 降级 OpenMVS 到不依赖该宏的版本(如 v2.0.0 及以前)
3. VCG/VCGLib 未找到
报错示例:
VCG required, but not found: Please specify VCG directory using VCG_ROOT env. variable
解决方法:
- 克隆 vcglib 仓库,并设置环境变量:
git clone https://github.com/cnr-isti-vclab/vcglib.git export VCG_ROOT=/path/to/vcglib
4. Python3 找不到
同 OpenMVG,见上文。
三、Docker 构建相关问题
1. COPY 只能用相对路径
说明:
- Dockerfile 的
COPY
只能用 build context 下的相对路径,不能用宿主机绝对路径。 - 推荐在项目根目录下执行:
docker build -f openMVS/docker/Dockerfile .
- 或用软链/临时复制的方式将源码放到 build context。
2. 构建无缓存
原因:
- build context 频繁变动
.dockerignore
配置不当COPY . /xxx
位置靠前
建议:
- 优化 Dockerfile 顺序,先装依赖再 COPY 代码
- 用
.dockerignore
排除无关文件
四、Python 包找不到模块
报错示例:
No module named hloc.pipelines.sfm
解决方法:
- 进入源码目录,执行开发模式安装:
pip install -e .
五、其它建议
- 遇到 CMake、GCC、CUDA 相关报错,优先考虑环境兼容性(推荐 Ubuntu 22.04 + GCC 11 + CUDA 11.8/12.2)。
- 多用官方文档和 issue 搜索,很多问题都有人遇到过。
- Docker 构建时,尽量让所有源码都在 build context 下,充分利用缓存。
结语
三维重建工具链的安装配置确实容易踩坑,但只要理解各依赖的版本关系和常见报错的本质,问题都能逐步解决。希望本文能帮你少走弯路,顺利搭建 OpenMVG/OpenMVS 环境!
如有新问题,欢迎补充交流!