首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >openMVS安装教程

openMVS安装教程

作者头像
云未归来
发布2025-07-17 10:55:58
发布2025-07-17 10:55:58
3910
举报

1. 简介

OpenMVS(Multi-View Stereo reconstruction library)是一个用于多视角立体重建的开源库,用于从多个图像中创建高质量的三维模型。它可以从图像集合中恢复三维几何和纹理信息,以创建更真实的场景重建。

  • 注意:openMVS库本身是不具备从image标定相机内外参功能的,因此后续使用的时候还要搭配其它pipeline,如openMVG或者其他sfm-pipeline。

2. 安装openMVS

  • 系统环境:windows10,git,vcpkg,cmake(后面三个没有安装的可自行百度,easy)

2.1 下载openMVS项目

openMVS项目链接 在本地随意一个位置输入

代码语言:javascript
复制
git clone https://github.com/cdcseacave/openMVS.git

等待安装即可,失败的大部分情况都是网络问题。

2.2 下载依赖库

使用vcpkg进行库的下载(vcpkg是c++库管理工具,类似于conda,windows下应该没有比vcpkg更好用的c++库管理工具了吧) vcpkg项目链接 点击链接,按照readme操作就行。 下载后双击bat文件就安装完成(在cmd中直接输入这个文件也行)

代码语言:javascript
复制
# 示例--安装boost库
# 建议先用search查看boost库有哪些版本
.\vcpkg search boost
# 选择合适的版本install
.\vcpkg install boost:x64-windows
# 由于网络原因,可能会失败,重新安装即可
建议安装完所有库后执行下面命令:
.\vcpkg integrate install # 这是告诉系统所有编译器你通过vcpkg安装的所有库的位置,之后写c++代码就可以直接include了,不需要
在手动设置库地址
2.3 安装cmake

下载cmake(自行百度安装,很简单) 安装完成后在cmd输入:

代码语言:javascript
复制
# 目前你已进入openMVS目录
mkdir build(随便取一个名字,建议build或者make)
cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=你的vcpkg安装路径\scripts\buildsystems\vcpkg.cmake

一般来说,这一步或多或少会遇到错误,我是由于cmake版本过高,CMakeList.txt文件中首行加一句CMAKE_POLICY(SET CMP0146 NEW)就ok了。

2.4 在build目录打开openMVS.sln(visual studio)

打开后界面如下:

右键ALL_BUILD ,点击生成

当然,你也可以按照openMVS项目的readme编译链接也行。 openMVS安装编译结束

3. 跑一跑openMVS示例

3.1 下载scene.mvs文件

前面说过,openMVS是不能直接由image重建三维图像的,因为它没有实现标定image的内外参。 openMVS官方示例在此官方示例 用的是Sceaux Castle的image进行重建

我们的目的是为了测试openMVS是否能用,而不管怎么由images得到mvs文件,所以呢,官方直接替我们生成了openMVS要输入的数据scene.mvs,这个文件是用上面的城堡images进行sfm(用的openMVG库)得到的,文件内容包括相机的内外参、稀疏点云以及对应的images。(后续,如果时间充裕,我会出一个openMVG配合openMVS的使用教程) 下载好scene.mvs文件后,可以用编译好的viewer模块来打开.mvs文件。 把scene.mvs拖到viewer.exe上就能看了(cmd命令行也行: Viewer.exe C:\Users\cv\Downloads\scene.mvs)

3.2 密集点云重建–densifypointcloud

scene.mvs里面只包含稀疏的点云,densifypointcloud.exe利用scene.mvs中提供的相机内外参以及稀疏点云进行图像校正,使image pair 的极线平行,这样就能利用平行的极线约束检测到更多特征(立体匹配内容),得到密集视差图计算深度,实现密集点云重建。 使用方法: 在官方示例中下载图片下载 新建一个文件夹(位置任意,命名任意),比如我的叫testdata,在testdata中新建images文件夹,把下载的image放进去,然后把下载的scene.mvs放在testdata中

命令行进入编译好的目录下(见下图),输入下列命令

等待完成即可(大约需要30分钟),完成后会testdata目录下生成一个scene_dense.mvs文件,可以使用viewer.exe查看效果。 可以看到,MVS生成的密集点云重建效果比sfm好很多

3.3 生成网格模型–reconstructmesh.exe

理论上,MVS的工作已经完成,但是openMVS不止实现密集点云重建,还实现了网格重建以及纹理映射,所以接下来一个一个实验效果。

代码语言:javascript
复制
ReconstructMesh.exe secene_dense.mvs -w E:\3Dreconstruction\openMVS\testdata

生成scene_dense_mesh.mvs 文件(这个过程很快)

3.4 网格细化–refinemesh

代码语言:javascript
复制
RefineMesh.exe secene_dense_mesh.mvs -w E:\3Dreconstruction\openMVS\testdata

生成secene_dense_mesh_refine.mvs(这个过程需要很长时间,可以查看命令行参数,修改默认meshrefine参数)

3.5 纹理映射–texturemesh

代码语言:javascript
复制
TextureMesh.exe secene_dense_mesh.mvs -w E:\3Dreconstruction\openMVS\testdata

生成secene_dense_mesh_texture.mvs,这个过程大约30分钟

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-07-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 简介
  • 2. 安装openMVS
  • 2.1 下载openMVS项目
  • 2.2 下载依赖库
    • 2.3 安装cmake
  • 2.4 在build目录打开openMVS.sln(visual studio)
  • 3. 跑一跑openMVS示例
  • 3.1 下载scene.mvs文件
  • 3.2 密集点云重建–densifypointcloud
  • 3.3 生成网格模型–reconstructmesh.exe
  • 3.4 网格细化–refinemesh
  • 3.5 纹理映射–texturemesh
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档