openmvs安装流程及报错解决方法

基于MVS的三维重建算法学习笔记(一)— MVS三维重建概述与OpenMVS开源框架配置 MVS(多视点立体算法,Multi-view stereo)能够单独从图像中构造出高度细节化的3D模型,采集一个庞大的图像数据集,用其来构建出一个用来解析图像的3D几何模型。 OpenMVS是一个比较经典的MVS(Multi-View Stereo)开源库,集成三维重建整个完整的技术方案;OpenMVS非常适合入门系统学习和二次开发。代码框架非常完善,代码实现清晰且规范,可快速提高项目实战经验。学习三维重建必备。... 阅读详情

依赖项

OpenMVS 依赖的几个开源库,有两个是可选的可以先不安装。

1. OpenCV version 4.5.2 or higher (注意:opencv 4.5.2版本需要的Eigen3版本为3.3.7,在安装opencv时需先安装Eigen3.3.7版本,opencv安装完成后再将Eigen3.3.7版本卸载,安装Eigen3.2版本,满足openmvs安装要求)
2. Eigen version 3.2 (or higher on Windows only)
3. Ceres version 1.10 or higher (可选)
4. CGAL version 4.2 or higher
5. Boost version 1.56 or higher
6. VCG
7. GLFW(可选)

工具

1. CMake
2. git
3. gcc 6 、 g++ 6 (gcc 5以上的版本才能完全支持C++11标准,gcc版本过低会报错)

Linux编译

系统版本:Ubuntu 16.04

opencv4.5.2安装参考:在Ubuntu18.04中安装OpenCV4.5

#准备一个空闲的机器安装:
sudo apt-get update -qq && sudo apt-get install -qq
sudo apt-get -y install git cmake libpng-dev libjpeg-dev libtiff-dev libglu1-
mesa-dev
#安装Eigen (必需)
git clone https://gitlab.com/libeigen/eigen.git --branch 3.2
mkdir eigen_build && cd eigen_build
cmake . ../eigen
make && sudo make install
cd ..
#安装Boost (必需)
sudo apt-get -y install libboost-iostreams-dev libboost-program-options-dev
libboost-system-dev libboost-serialization-dev

#安装CGAL (必需)
sudo apt-get -y install libcgal-dev libcgal-qt5-dev
#安装VCGLib (必需)
git clone https://github.com/cdcseacave/VCG.git vcglib
sudo cp -r /home/用户名/vcglib/vcg /usr/include 
sudo cp -r /home/用户名/vcglib/wrap /usr/include
#安装Ceres (可选)sudo apt-get -y install libatlas-base-dev libsuitesparse-dev
git clone https://ceres-solver.googlesource.com/ceres-solver ceres-solver
mkdir ceres_build && cd ceres_build
cmake . ../ceres-solver/ -DMINIGLOG=ON -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF
make -j2 && sudo make install
cd ..
#安装GLFW3 (可选)
sudo apt-get -y install freeglut3-dev libglew-dev libglfw3-dev
#安装OpenMVS
git clone https://github.com/electech6/openMVS_comments.git openMVS
mkdir openMVS_build && cd openMVS_build
cmake . ../openMVS -DCMAKE_BUILD_TYPE=Release -DVCG_ROOT="/path to vcglib/vcglib"
#其中“/path to vcglib/ vcglib”需要改为vcg库的实际文件位置,此外,还需将CmakeCache.txt中两项vcg库地址改为vcg库实际文件地址。

#如果想生成共享库,可以在cmake加如下命令:
#-DBUILD_SHARED_LIBS=ON
#生成 OpenMVS 库文件:
sudo make -j2 && sudo make install

安装报错及解决方法

若你已按上面的版本配置进行openmvs的安装,后面的报错可能不会遇到,下面是我安装过程中遇到的报错及解决方法。

1. cmake编译openmvs时,提示vcg 库缺失

解决方法参考:安装openmvs时 提示vcg库找不到

2. make生成openmvs库文件时,fatal error: codecvt: No such file or directory.

解决方法参考:make编译时fatal error: codecvt: No such file or directory解决方法

3.make生成openmvs库文件编译报错03

/home/用户名/openMVS/libs/Common/Types.h:664:1: error: body of constexpr function ‘constexpr int SEACAVE::log2i(int)’ not a return-statement

报错部分程序代码:

constexpr int log2i(int val) {
	int ret = -1;
	while (val > 0) {
		val >>= 1;
		ret++;
	}
	return ret;
}

C++11中的constexpr指定的函数返回值和参数必须要保证是字面值,而且必须有且只有一行return代码,这给函数的设计者带来了更多的限制,比如通常只能通过return 三目运算符+递归来计算返回的字面值。
参考资料:C++11/14 constexpr 用法
C++11标准下:
constexpr函数使用前必须有对应的定义语句;
constexpr函数中return语句中不能赋值;
return返回的表达式必须是常量表达式,除了形参外不能含有其他变量;
只能包含一条return返回语句,constexpr函数必须有返回值,即返回类型不能是void。

分析代码功能,发现其是求形参变量val的二进制位数减一,因此改成以下代码:(其实这里不用修改程序代码,由C++11/14 constexpr用法可知,constexpr函数在C++14标准下,要求较低,因此只需找到make编译相关的makefile文件,在其中的c++标准设置信息中改为-std=c++14即可)

constexpr int log2i(int val) {
           return floor(log(val)/log(2)+1);

}

然后成功编译,不再报错。

4.make生成openmvs库文件编译报错04

/home/xie/openMVS/libs/Common/Types.h:1483:70: error: ‘cv::Matx_DivOp’ has not been declared

查询资料:三维重建】Ubuntu16.04安装Colmap+OpenMVS注意事项(踩坑记录),提到该问题是opencv版本太低导致的,其推荐opencv-4.5.2版本。
查询opencv版本为2.4.9.1,卸载opencv 2.4.9.1版本,安装opencv 4.5.2。
opencv 4.5.2要求Eigen的版本为3.3.7,需先将Eigen3.2.10卸载,安装Eigen3.3.7,完成对opencv-4.5.2的安装,再将Eigen3.3.7卸载,安装Eigen3.2.10,满足openmvs的安装要求。
然后成功编译,不再报错。

5.make生成openmvs库文件编译报错05

/home/xie/openMVS/libs/MVS/Mesh.cpp:44:33: fatal error: vcg/complex/complex.h: 没有那个文件或目录
 #include <vcg/complex/complex.h>
                                 ^
compilation terminated.
libs/MVS/CMakeFiles/MVS.dir/build.make:127: recipe for target 'libs/MVS/CMakeFiles/MVS.dir/DepthMap.cpp.o' failed
make[2]: *** [libs/MVS/CMakeFiles/MVS.dir/DepthMap.cpp.o] Error 1
make[2]: *** 正在等待未完成的任务....
libs/MVS/CMakeFiles/MVS.dir/build.make:177: recipe for target 'libs/MVS/CMakeFiles/MVS.dir/Mesh.cpp.o' failed
make[2]: *** [libs/MVS/CMakeFiles/MVS.dir/Mesh.cpp.o] Error 1
CMakeFiles/Makefile2:391: recipe for target 'libs/MVS/CMakeFiles/MVS.dir/all' failed
make[1]: *** [libs/MVS/CMakeFiles/MVS.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2

分析认为是vcg库不在默认的include文件导致查找vcg的头文件失败。

sudo cp -r /home/用户名/vcglib/vcg /usr/include 

将vcg库文件复制到/usr/include文件夹内后,解决报错。

6.make生成openmvs库文件编译报错06

/home/xie/openMVS/libs/MVS/../Common/Types.h:656:1: error: body of constexpr function ‘constexpr T SEACAVE::powi(T, int) [with T = double]’ not a return-statement
 }

与报错3一样,还是C++11中的constexpr函数规定限制,该函数具体如下所示:

template<typename T>
constexpr T powi(T base, int exp) {
	T result(1);
	while (exp) {
		if (exp & 1)
			result *= base;
		exp >>= 1;
		base *= base;
	}
	return result;
}

从Makefile中MVS安装语句可发现如下信息:

$(MAKE) -f libs/MVS/CMakeFiles/MVS.dir/build.make libs/MVS/CMakeFiles/MVS.dir/build

从build.make可发现:

# Include any dependencies generated for this target.
include libs/MVS/CMakeFiles/MVS.dir/depend.make

# Include the progress variables for this target.
include libs/MVS/CMakeFiles/MVS.dir/progress.make

# Include the compile flags for this target's objects.
include libs/MVS/CMakeFiles/MVS.dir/flags.make

猜测通过修改flags.make中的信息,可以使make采用从C++14标准进行编译。

-include /home/xie/openMVS_build/libs/MVS/cotire/MVS_CXX_prefix.hxx -std=c++11

将flags.make文件中的该语句改为:

-include /home/xie/openMVS_build/libs/MVS/cotire/MVS_CXX_prefix.hxx -std=c++14

修改后解决报错。

7.make生成openmvs库文件编译报错07

In file included from /home/xie/openMVS/libs/MVS/Mesh.cpp:44:0:
/usr/include/vcg/complex/complex.h:39:27: fatal error: wrap/callback.h: 没有那个文件或目录
 #include <wrap/callback.h>

报错:头文件wrap/callback.h缺失。
查询资料vcglib库的入坑体验(读取obj文件并显示),发现wrap/callback.h在vcglib文件夹下,类似问题5将vglib文件夹下的wrap文件夹复制到/usr/include文件夹内。

sudo cp -r /home/xie/vcglib/wrap /usr/include

解决报错。

8.make生成openmvs库文件编译报错08

from /home/xie/openMVS/libs/MVS/Mesh.cpp:44:
/usr/include/vcg/math/matrix44.h:33:31: fatal error: eigenlib/Eigen/Core: 没有那个文件或目录
 #include <eigenlib/Eigen/Core>

仍然是头文件的缺失。

cd /usr/include
ls

发现有eigen3文件夹

cd eigen3
ls

发现有Eigen文件夹

cd Eigen
ls

发现Core文件。
由此可知,应将

#include <eigenlib/Eigen/Core>

改为

#include <eigen3/Eigen/Core>

修改对应文件中代码

cd /usr/include/vcg/math
sudo gedit matrix44.h

将

#include <eigenlib/Eigen/Core>
#include <eigenlib/Eigen/LU>

改为

#include <eigen3/Eigen/Core>
#include <eigen3/Eigen/LU>

解决问题。

三维重建_使用OpenMVG/OpenMVS重建场景_环境配置/测试 OpenMVG OpenMVS三维重建 安装运行测试 阅读详情

相关推荐

【计算机视觉】三维重建: OpenMVS:工业级多视图立体视觉重建框架

三维视觉: OpenMVS:工业级多视图立体视觉重建框架

weixin_43988131的博客 3174

openMVS

openMVS学习记录

Meteor的笔记 6848

OpenMVG & OpenMVS 安装全流程常见问题与解决方法总结

本文总结了OpenMVG和OpenMVS三维重建工具链安装过程中的常见问题及解决方法。主要问题包括:依赖包缺失、GitHub下载失败、Python3找不到、GCC/CUDA版本不兼容、OpenCV版本过低、VCGLib未找到等。文章提供了详细的解决方案,如安装特定版本依赖、设置环境变量、源码编译等操作指南。同时针对Docker构建问题,给出了优化构建顺序和使用缓存的建议。推荐使用Ubuntu 22.04 + GCC 11 + CUDA 11.8/12.2的兼容环境组合,可有效减少安装过程中的报错。

gaussrieman123的博客 1349

make编译时fatal error: codecvt: No such file or directory解决方法

在安装openmvs,使用如下命令生成生成 OpenMVS 库文件 sudo make -j2 && sudo make install 编译报错,信息如下 fatal error: codecvt: No such file or directory 查阅codecvt资料后发现,codecvt为c++标准库(示例代码),其起到封装字符串的转换,包括宽和多字节,从一种编码到另一种的作用。 最初从一些帖子上看到,codecvt库只有C++11标准及以上才支持,需要在编译时gcc后添上“-

xsoftwarex的博客 7206

openMVS+ubuntu1804安装记录和问题解决

openMVS+ubuntu1804安装记录和问题解决什么是openmvs安装说明系统:ubuntu18.04 (按照我这个安装方式在ubuntu16.04上也是可以的,ubuntu20没有试过)工具相关依赖编译安装问题记录 什么是openmvs OpenMVS:open Multi-View Stereo reconstruction library 多视立体重建库,是mvs三维重建算法的开源库,地位相当于opencv之于图像处理,有成熟的SfMpipeline解决方案。 关于Sfm更多信息,可以参考文章

qq_35250841的博客 1588

openMVG openMVS 三维重构

OPENMVG 用的是surface win10 64位 Visual Studio 2017 安装 https://github.com/openMVG/openMVG/blob/master/BUILD.md 安装git https://git-scm.com/downloads 全部默认 使用vcpkg安装 win+R 打开cmd 输入 cd c:/ mkdir openMVG_MVS cd...

FW的博客 3691

最详细简单的OpenMVS环境配置(Windows,VS2019+Vcpkg)(2024/01/26)

前提:Vcpkg已集成到VS1.安装依赖库①在Vcpkg的安装根目录,右键打开终端②运行下面的安装命令安装第三方库的过程会很长,耐心等待。2.问题总结由于我在本次安装依赖过程中未遇到问题,故无法给出具体案例。一般Vcpkg报错问题都形如:1)网络问题这个问题很好解决,一般解决思路如下:以LLVM为例方法1——该方法不局限于因网络问题的报错,如果你觉得下载过程十分缓慢还可手动下载downloading部分①当出现上述红色报错或你觉得下载很慢时,向上找部分:②复制网址到浏览器,下载。

BQ Blog 6774

openMVS安装(ubuntu 22.04)

可能的原因是gcc-11,g+±11与cuda版本不兼容,此时降低gcc,g++版本到gcc-10,g+±10可解决。删除openMVS_build文件夹重新创建文件夹,进行编译。

weixin_46841271的博客 1318

openmvs编译与使用

openmvs编译与使用

诺有缸的高飞鸟的博客 9060

Ubuntu 22.04下openMVS的安装与常见问题解决指南

本文详细介绍了在Ubuntu 22.04系统上安装openMVS三维重建库的完整流程与常见问题解决方案。内容涵盖环境准备、第三方依赖库(如Eigen、OpenCV、CGAL、VCGLib)的安装、源码编译配置,并重点针对GCC版本兼容性、VCGLib路径错误等高频编译问题提供了实用的排坑指南,帮助用户顺利完成部署。

weixin_29271053的博客 562

colmap+openmvs进行三维重建流程全记录

运行colmap的可执行文件

weixin_44153180的博客 3888

OpenMVG & OpenMVS 在 Linux Ubuntu 18.04 版本中的安装与使用问题解决方案

Q1.在OpenMVG过程中,根据工程BUILD.md安装到下述代码的时候,报错如下图所示: $ cmake –build . –target install openMVG/multiview/CMakeFiles/openMVG_multiview.dir/build.make:134: recipe for target 'openMVG/multiview/CMakeFiles/openMVG_multiview.dir/rotation_averaging_l1.cpp.o' failed

杨杨的博客 1887

三维重建之colmap+openmvs

本文介绍了基于Docker的3D重建环境配置流程。首先通过Docker搭建Ubuntu 20.04环境并配置GUI功能,然后详细记录了COLMAP和OpenMVS的编译安装过程,包括依赖安装、源码编译和错误修正。其中COLMAP安装需解决apt安装失败问题,OpenMVS编译需修改代码错误并处理依赖关系。最后配置Python环境运行3D重建代码,解决了typing_extensions版本问题。整个过程涵盖了从容器配置到软件编译、错误调试的全部步骤,为3D重建工作提供了完整的开发环境搭建方案。

qq_46454669的博客 1822

Ubuntu18.04下配置OpenMVS的流程及一些问题

Ubuntu18.04下配置OpenMVS的流程及一些问题参考文献基本流程需要的工具官方教程中文翻译遇到的问题1.git clone太慢2.git clone报错3.关于main_path='pwd'的路径问题4.Eigen库的版本问题5.Cmake的时候卡住了6.运行make -j2 && sudo make install时报错: 参考文献 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 基本流程 需要的工具

LXLng的博客 2263

Synopsys工具filter命令:从数据筛选到高效IC设计的实战指南

在数字集成电路设计流程中,数据筛选与查询是工程师处理海量网表、时序报告和设计约束的核心需求。其原理在于通过声明式查询语言,直接对设计对象(如单元、网络、路径)的属性进行逻辑判断与模式匹配,从而精准定位目标。这种技术价值在于将工程师从繁琐的过程式脚本循环中解放出来,大幅提升代码可读性与运行效率,直接调用工具内置的高性能查询引擎。在实际应用场景中,它广泛用于物理与时序联合分析、层次化模块操作、动态约束生成以及自动化报告生成。本文聚焦于Synopsys工具链中filter命令的高阶用法,深入解析其表达式语法、正则

weixin_28007513的博客 577

Matlab PolySpace 静态分析实战:从零搭建嵌入式代码安全防线

本文详细介绍了如何使用Matlab PolySpace进行嵌入式代码静态分析,从环境搭建到实战配置,帮助开发者提前发现内存溢出、未初始化变量等潜在缺陷。通过案例分享和进阶技巧,展示如何提升代码安全性和可靠性,特别适合汽车ECU、医疗设备等安全关键系统开发。

weixin_33701617的博客 602

【三维重建】Ubuntu16.04安装Colmap+OpenMVS注意事项(踩坑记录)

最近实验室在搞三维重建的项目,要在服务器上安装Colmap+OpenMVS环境,参考github、博客、官网给出较为完整的安装流程。 注意安装之前确保服务器上没有安装anaconda,否则在编译时会找anaconda的路径而报错。 先说一下各项依赖的版本: 1.colmap-3.5 2.ceres-slover 1.4.1 3.eigen3.3.7 4.cmake3.13 5.opencv-4.5.2 6.vcglib 7.openMVS 1.安装Colmap 按照官网安装http://colmap.gi

DJames23的博客 2745

单目和多目视觉统一标定

单目和多目视觉统一标定 一.单目视觉标定 在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为相机标定(或摄像机标定)。无论是在图像测量或者机器视觉应用中,相机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响相机工作产生结果的准确性。因此,做好相机标定是做好后续工作的前提,提高标定精度是科研工作的重点所在

吴建明wujianming_110117 2911

Ubuntu20.04安装openMVS<成功>.colmap<成功>和openMVG<失败(已成功)>

1//可能ubuntu20的资源库缺少python-minimal和liblemon-dev,将python-minimal换成python2-minimal,而liblemon-dev采用手动安装。尝试了N次,查看了很多博文,步骤就是这些步骤,也根据官方文件步骤试过了,都不行(aaa)。如果有大佬知道如何解决这个问题麻烦留言一下或联系我~~(xiexie。

m0_69023437的博客 1059

Flightmare实战:从零搭建强化学习无人机控制环境

本文详细介绍了从零开始搭建Flightmare强化学习无人机控制环境的完整流程。内容包括环境准备、核心库安装、依赖冲突解决,以及如何运行PPO算法示例进行训练与可视化测试。文章还提供了环境配置、自定义任务修改及常见问题的避坑指南,帮助开发者快速上手这一模块化的无人机RL仿真平台。

weixin_29081101的博客 356

openEuler 欧拉 安装Oracle19c数据库RPM包安装

欧拉系统安装部署oracle 19c rpm方式

陈苏漾的IT生涯 6894

【框架安装】win10+VS2019+openMVS+openMVG第二次配置失败详细步骤记录

记录一下我的第二次配置环境 前两天真的太虐了,但也成长不少,因此开始第二次的环境配置之路哈哈哈哈哈 由于真的不是很行,于是求助了某位大佬,根据他的博客来安装:http://lznblog.cn/index.php/2021/12/04/win11%e4%b8%8b%e7%9a%84openmvg%e5%92%8copenmvs%e6%90%ad%e5%bb%ba/ 有几项工作需要完成 安装VS2019 安装CMake 在github下载一些源代码 安装vcpkg 使用CMake编译第三步下载的源代码 .

zeng001201的博客 3281

QMK固件OLED显示屏配置教程:从零开始实现个性化键盘显示(实操部分)

本教程详细介绍了如何从零开始配置QMK固件的OLED显示屏,实现个性化键盘显示。首先,文章解释了OLED显示屏的基本概念及其在键盘中的应用,并介绍了I2C和SPI两种通信方式。接着,教程逐步指导用户如何在QMK固件中启用OLED功能,包括在rules.mk中启用OLED、在halconf.h和mcuconf.h中配置I2C功能,以及在config.h中设置I2C和OLED参数。最后,教程展示了如何在keymap.c中编写代码,实现OLED显示内容,并提供了进阶定制功能,如显示当前层信息、按键状态和QMK L

Despacito0o的博客 581

Ubuntu20.04安装三维重建的openMVG、openMVS和colmap环境

在ubuntu20.04系统下安装三维重建的openmvg、openmvs和colmap

C_hao 3320

完整复盘【避雷jd文职某岗位】潍坊青州hhj(据说未来搬到天津),助理实验师岗位,三人进面,面试全部不及格,空头岗位!像这种情况,该单位很多 | 附个人完整备考背诵题目 | 世间一场梦,不会再考这个了

本文以博主本人报考jun dui文职,从报考、备考、考试、查成绩到资格审查、面试,全程亲身经历,给想要报考该内容的朋友们一些小的参考。祝你顺利上岸!完整复盘【避雷jd文职某岗位】潍坊青州hhj(据说未来搬到天津),助理实验师岗位,三人进面,面试全部不及格,空头岗位!像这种情况,该单位很多 | 附个人完整备考背诵题目 | 世间一场梦,不会再考这个了

追光者♂:记录、分享、总结、提升,现象级专栏《Python从入门到人工智能》作者,无惧黑暗,坚信曙光 249

华为OD新系统机试真题 - 配置操作失败数量统计

华为OD机试新系统 4月8号【配置操作失败数量统计】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【配置操作失败数量统计】。

qq_45776114的博客 1162
上一篇: make编译时fatal error: codecvt: No such file or directory解决方法
谢小奇
博客等级 码龄10年 7粉丝 11原创
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值