在Ubuntu 18.04上从零搭建OpenMVS环境:一份避坑指南与Docker镜像分享
在Ubuntu 18.04上从零搭建OpenMVS环境:一份避坑指南与Docker镜像分享
OpenMVS作为开源的多视图立体视觉库,在三维重建领域有着广泛的应用。然而对于初次接触的开发者来说,在Ubuntu 18.04系统上搭建完整的OpenMVS开发环境往往充满挑战。本文将分享一套经过验证的安装方案,不仅详细解析每个关键步骤的潜在问题,还提供预配置好的Docker镜像,帮助开发者快速搭建稳定可靠的开发环境。
1. 环境准备与基础依赖安装
在开始安装OpenMVS之前,确保系统环境满足基本要求至关重要。Ubuntu 18.04作为长期支持版本(LTS),其稳定性使其成为开发环境的理想选择。
首先更新系统软件包并安装基础编译工具:
sudo apt-get update
sudo apt-get install -y git cmake gcc g++ build-essential
这些工具将用于后续所有库的编译安装过程。特别提醒,不同版本的编译器可能导致兼容性问题,建议使用系统默认版本:
gcc --version # 应显示7.x版本
g++ --version # 应显示7.x版本
接下来安装图像处理相关的基础库:
sudo apt-get install -y libpng-dev libjpeg-dev libtiff-dev libglu1-mesa-dev
注意:如果之前尝试过安装但失败,建议先执行
sudo apt-get autoremove清理残留文件,避免版本冲突。
2. 关键依赖库的安装与版本管理
OpenMVS依赖多个第三方库,每个库的版本选择直接影响最终编译结果。以下是经过验证的版本组合及安装方法。
2.1 Eigen库安装
Eigen作为线性代数计算库,必须使用3.4或更高版本。Ubuntu 18.04默认仓库中的版本可能过低,建议源码编译:
wget https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.tar.gz
tar -xzvf eigen-3.4.0.tar.gz
cd eigen-3.4.0
mkdir build && cd build
cmake ..
sudo make install
验证安装是否成功:
pkg-config --modversion eigen3
2.2 Boost库安装
Boost库需要1.56以上版本,可直接通过apt安装:
sudo apt-get install -y libboost-iostreams-dev libboost-program-options-dev \
libboost-system-dev libboost-serialization-dev
检查安装版本:
dpkg -s libboost-dev | grep Version
2.3 OpenCV安装
虽然OpenMVS支持OpenCV 2.4及以上版本,但建议安装OpenCV 3.x:
sudo apt-get install -y libopencv-dev
验证安装:
pkg-config --modversion opencv
2.4 CGAL安装
计算几何算法库(CGAL)可通过apt直接安装:
sudo apt-get install -y libcgal-dev libcgal-qt5-dev
3. VCGlib的特殊处理与版本回退
VCGlib是OpenMVS的核心依赖之一,也是最容易出问题的环节。官方仓库的最新版本可能与Ubuntu 18.04环境存在兼容性问题。
首先克隆VCGlib仓库:
git clone https://github.com/cdcseacave/VCG.git vcglib
关键步骤是回退到稳定版本:
cd vcglib
git reset --hard 88f12f212a1645d1fa6416592a434c29e63b57f0
这个特定版本在Ubuntu 18.04环境下验证可用。版本回退后,无需编译,直接设置环境变量即可。
4. OpenMVS编译与安装
完成所有依赖安装后,可以开始编译OpenMVS本体。
首先获取源代码:
git clone https://github.com/cdcseacave/openMVS.git openMVS
创建编译目录并配置:
mkdir openMVS_build && cd openMVS_build
cmake ../openMVS -DCMAKE_BUILD_TYPE=Release -DVCG_ROOT="$HOME/vcglib"
开始编译(根据CPU核心数调整-j参数):
make -j4
sudo make install
编译过程可能持续30分钟到数小时不等,取决于硬件配置。常见问题包括:
- 内存不足:可减少并行编译线程数(如改为-j2)
- 依赖缺失:检查前述所有依赖是否安装正确
- 版本冲突:确认所有库版本符合要求
5. Docker镜像快速部署方案
为简化流程,我们提供了预配置好的Docker镜像,包含所有正确版本的依赖和OpenMVS本体。
获取镜像:
docker pull username/openmvs-ubuntu18.04:latest
运行容器:
docker run -it --name openmvs-dev username/openmvs-ubuntu18.04:latest
镜像已包含:
- 所有正确版本的依赖库
- 预编译的OpenMVS可执行文件
- 测试数据集样例
- MeshLab可视化工具
提示:Docker方案特别适合教学环境、快速验证或需要环境隔离的场景。
6. 功能测试与验证
安装完成后,可通过内置测试验证功能完整性。
首先准备测试数据:
wget https://example.com/openmvs-test-data.tar.gz
tar -xzvf openmvs-test-data.tar.gz
执行稠密重建测试:
./DensifyPointCloud -w ./test-data -i scene.mvs -o dense.mvs
可视化结果需要安装MeshLab:
sudo apt-get install -y meshlab
然后打开生成的文件:
meshlab dense.mvs
完整处理流程包括:
- 稠密点云生成
- 网格重建
- 网格优化
- 纹理贴图
每个步骤都有对应的命令行工具,可通过--help参数查看详细选项。
7. 常见问题解决方案
在实际部署中可能遇到的典型问题及解决方法:
问题1:CMake配置阶段报VCG_ROOT路径错误
解决方案:
# 确认vcglib路径
ls ~/vcglib/vcg
# 重新配置时使用绝对路径
cmake ../openMVS -DVCG_ROOT="/home/user/vcglib"
问题2:编译时Eigen相关报错
通常是版本不匹配导致,解决方案:
# 卸载现有Eigen
sudo rm -rf /usr/local/include/eigen3
# 重新安装指定版本
wget https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.tar.gz
tar -xzvf eigen-3.4.0.tar.gz
cd eigen-3.4.0
mkdir build && cd build
cmake ..
sudo make install
问题3:运行时GLIBCXX版本错误
Ubuntu 18.04默认GCC版本可能较低,解决方案:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-9 g++-9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 60
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 60
对于希望深入理解系统工作原理的开发者,建议阅读OpenMVS源代码,特别是libs/MVS目录下的核心实现。在实际项目中,合理配置CMake选项可以优化性能:
# 在openMVS_build/CMakeCache.txt中可调整以下参数:
CMAKE_BUILD_TYPE=Release
MVS_USE_OPENMP=ON
MVS_USE_SSE=ON
更多推荐
所有评论(0)