当前位置: 首页 > news >正文

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 构建环境无外网

解决方法:

  1. 在能联网的环境手动下载 rerun_cpp_sdk.zip
  2. 将其放到 CMake 期望的目录(如 /opt/openMVG_Build/_deps/rerun_sdk-subbuild/rerun_sdk-populate-prefix/src/)。
  3. Dockerfile 里用 COPY 指令复制到该目录。

3. Python3 找不到

报错示例:

Could not find a package configuration file provided by "Python3" ...

原因分析:

  • CMake 版本过低(如 Ubuntu 18.04 默认 CMake 3.10)
  • 缺少 python3-devpython3-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 环境!

如有新问题,欢迎补充交流!

http://www.lryc.cn/news/596564.html

相关文章:

  • 学习软件测试的第十九天
  • imx6ull-系统移植篇18——linux顶层 Makefile(下)
  • API是什么,如何保障API安全?
  • Springboot和postman的使用
  • XSS内容分享
  • 智能泵房监控系统:物联网应用与智能管理解决方案
  • Qt中QObject类的核心作用与使用
  • Qt 事件处理机制深入剖析
  • List<UserInfo> list = new ArrayList<>();为什么要这样创建数组?
  • 如何用keepAlive实现标签页缓存
  • 从 COLMAP 到 3D Gaussian Splatting
  • 滑动窗口经典问题整理
  • langchain4j之RAG 检索增强生成
  • Linux操作系统之线程(六):线程互斥
  • TCP day39
  • 质量即服务:从测试策略到平台运营的全链路作战手册
  • 重生学AI第十九集:VGG16的使用以及模型的保存与加载
  • 【期末考试复习】计算机组成原理 - 直接补码阵列乘法器
  • 【接口自动化】pytest的基本使用
  • CSS+JavaScript 禁用浏览器复制功能的几种方法
  • web登录页面
  • 黑马点评练习题-给店铺类型查询业务添加缓存(String和List实现)
  • kafka4.0集群部署
  • 数据结构01:链表
  • docker compose 安装使用笔记
  • Docker实战:使用Docker部署TeamMapper思维导图工具
  • 【实时Linux实战系列】基于实时Linux的传感器网络设计
  • Spring Boot音乐服务器项目-登录模块
  • 【论文阅读】Fast-BEV: A Fast and Strong Bird’s-Eye View Perception Baseline
  • 基于VU13P的百G光纤FMC高性能处理板