openMVG +PMVS-CMVS传统方法重建 复现的记录
openMVG +PMVS-CMVS传统方法重建 复现的记录
侧重于报错;编译,运行参考网上的博客,本文给了比较好的链接
openMVG 编译配置,运行可参考的链接:
openMVG 源码下载说明:
- openMVG-github仓库:https://github.com/openMVG/openMVG (记得使用这个分支:https://github.com/openMVG/openMVG/tree/develop_ceres2.0 为了解决 openMVG_main_IncrementalSfM: command not found问题-https://github.com/openMVG/openMVG/issues/1976)
openMVG 编译配置,运行可参考的链接:
- https://blog.csdn.net/baidu_40840693/article/details/84777589:sensor_width_camera_database.txt 相机型号的写法;出现’neato’ 提示的解释;使用命令行重建的写法(与运行.py文件参照看)
- https://www.codenong.com/cs109846563/: 不想用源码编译的可以参考,这篇博客直接下载的release版本
- 编译参考:https://blog.csdn.net/X_kh_2001/article/details/83690094 ;https://blog.csdn.net/solar_Lan/article/details/79495654(linux下下载编译)
- 代码理解:https://blog.csdn.net/weixin_41109672/article/details/107426873;
- https://blog.csdn.net/vanilla_an/article/details/115334413 : 看照片参数; 命令行运行方式
- 官方的一些说明:https://openmvg.readthedocs.io/en/latest/software/SfM/SfM/
- 最推荐的博客(编译过程,系统):https://blog.yanjingang.com/?p=3329; https://blog.csdn.net/weishaodong/article/details/106096221(openMVG的配置编译过程很全面)
照片数据集下载:
openMVG 运行出问题解决办法汇总
-
使用自己拍摄的图片跑
openMVG
的turtor_demo.py
等代码时,出现错误,没有生成sfm_data.bin
../sfm_data.bin" cannot be read
(这个原因困扰了我很久,经过测试,目前还不确定到底是哪个原因引起的),原因可从以下几个方面进行着手:
-
sensor_width_camera_database.txt 格式不对,参数不对,这篇博客https://blog.csdn.net/betterc5/article/details/114588696使用的是传感器的宽度,但是我使用的是焦距(看图片属性可知道),重建成功
-
修改代码段,参考:https://blog.51cto.com/stq054188/2896572;https://blog.csdn.net/stq054188/article/details/105088414;我试了,我将
f
从焦距-宽度-宽度的1.2倍- “-1” 都试了一下,没有成功,最终使用原本的默认值的"-f" ,"1"
的 -
github上的解决办法参考链接(我也是看来issues,猜测我的报错问题是我之前项目编译的eigen包造成的,因为我本地编译存在以下问题,但是我用服务器,一个干净的ubuntu环境编译,没有报错):
-
https://github.com/openMVG/openMVG/issues/2011 (使用
git clone --recursive -b develop_ceres2.0 https://github.com/openMVG/openMVG.git
代替git clone --recursive https://github.com/openMVG/openMVG.git
的原因:新版本把openMVG_main_IncrementalSfM
等合成了openMVG_main_SfM
); -
https://github.com/openMVG/openMVG/issues/1967 ; (建议:增加图像;我改变了我拍摄的图像,由怼着拍改为拍远处的建筑,重建成功)
-
-
Invalid matches file 问题
- https://blog.csdn.net/weixin_39461878/article/details/106279844:改代码命令,生成matches的命令行中加上-g e
-
Invalid regions files for the view
-
sensor_width_database.txt 相关的报错
- https://github.com/openMVG/openMVG/issues/1981
- No sensor_width_database.txt file : https://github.com/openMVG/openMVG/issues/1841
PMVS,CMVS编译使用参考:
- https://blog.csdn.net/zzzblog/article/details/17166869 (辅助理解)
- https://blog.yanjingang.com/?p=3329 (推荐,系统 与openMVG结合)
需要注意的问题:
-
自己照片在传输过程中,会损失,我直接使用邮件发送会导致图片的名字变化,使得图片属性失去相机型号和焦距,导致报错(过程会报焦距miss,最终会报sfm_data.bin" cannot be read ),最终先在手机上打包图片,然后邮件发送 ,可避免损失;
-
照片显示的焦距可能与相机的焦距不同,以相机的焦距为准,我拍远景的时候可以重建成功,但是怼着物体拍,重建失败,报无法读
sfm_data.bin
的错误 -
自己使用源码编译,不要这么clone: git clone --recursive https://github.com/openMVG/openMVG.git;要这么clone :
git clone --recursive -b develop_ceres2.0 https://github.com/openMVG/openMVG.git
,clone之前的分支,因为最新的仓库做了一些修改,但是很多人的复现都是集于之前的分支的,使用网上现有的代码会报一些错误仓库develop_ceres2.0分支编译才有openMVG_main_IncrementalSfM