colmap+openmvs进行三维重建流程全记录
window下的colmap+openmvs进行三维重建流程全记录
1.colmap安装与配置
可参考:https://blog.csdn.net/weixin_44153180/article/details/129334018?spm=1001.2014.3001.5501
2.openmvs安装与配置
可参考:https://blog.csdn.net/rdw1246010462/article/details/121040949
以下步骤建立在已经有colmap和openmvs的可执行程序的条件下
3.colmap生成密集点云
首先新建一个文件夹pro, 在pro文件夹内新建一个image文件夹,把需要用来重建的影像放进去。
运行colmap的可执行文件,点击 File->New Project, Database那一栏点击new,在pro文件夹下新建一个test.db文件,文件路径不要有中文,Images那一栏点击select,选择刚才建的image文件夹,点击save保存

在界面中点击processing->Feature extraction,选择camera model 为PINHOLE,其他的默认参数就行,点击 Extract, 等待执行完毕

执行完成后,点击Processing->Feature matching,默认参数就行,点击 Run,等待执行完毕。

匹配完成后,点击Reconstruction ->Start reconstruction ,这一步就是SFM,执行完毕后得到类似于下面这样的稀疏点云。

在之前的image文件夹的同级目录下新建一个dense文件夹。

点击Reconstruction ->Dense reconstruction, 点击select, 选择刚才新建的dense文件夹,这里将要保存的就是dense重建的结果。依次点击Undistortion, Stereo, Fusion, 顺次执行完毕.
等待执行结束后,在colmap界面中点击File->export model as txt , 选择文件夹dense下的sparse文件夹,这是把.bin类型的sfm相关的文件转成txt格式,openmvs只支持txt格式的,所以必须转。转换后得到的文件

特别注意:打开cameras.txt看一下,如果相机模型是Pinhole,是可以的,如果不是改成pinhole,这里不管你之前选的是不是pinhole,这里都可以直接改没关系,因为openmvs只支持pinhole结果的模型。
4.openmvs 重建纹理模型

因为我是源码编译的,可以在vs2019中打开openmvs项目
首先,右键 InterfaceCOLMAP,设为启动项目
并且打开项目属性,在配置属性->调试->命令参数中填入对应的参数

如果没有编译源码,而是直接用了编译好的可执行程序,那就在控制台入openMVS_sample的bin文件夹,执行命令:
InterfaceCOLMAP.exe -i G:\study\Dataset\Zeche\colmappro\dense -o G:\study\Dataset\Zeche\colmappro\dense\scene.mvs --image-folder G:\study\Dataset\Zeche\colmappro\dense\images
这时可以看到dense文件夹下生成了scene.mvs文件
接着可以执行mesh reconstruction, mesh refine , texture等操作
mesh reconstrction
命令参数为:
-w G:\study\Dataset\Zeche\colmappro\dense -i G:\study\Dataset\Zeche\colmappro\dense\scene.mvs -o G:\study\Dataset\Zeche\colmappro\dense\mesh.mvs
如果image不在当前文件夹,这里通过 -w 选项指定workspace的路径
mesh refine
命令参数为:
-w G:\study\Dataset\Zeche\colmappro\dense -i mesh.mvs -o refinemesh.mvs
这一步运行时间比较久,且占用内存巨大。我的电脑带不动,出现了报错,算了跳过这一步

Meshtexture
-i G:\study\Dataset\Zeche\colmappro\dense\mesh.mvs -w G:\study\Dataset\Zeche\colmappro\dense
运行完之后,下载一个meshlab查看可视化结果,下载地址:
https://github.com/cnr-isti-vclab/meshlab/releases
5.mesh 结果

我的评价是,略粗糙。。。。可能是没有meshrefine成功的原因…
参考博客
https://blog.csdn.net/tangli_sea/article/details/108569035?spm=1001.2014.3001.5506
相关文章:
colmap+openmvs进行三维重建流程全记录
window下的colmapopenmvs进行三维重建流程全记录 1.colmap安装与配置 可参考:https://blog.csdn.net/weixin_44153180/article/details/129334018?spm1001.2014.3001.5501 2.openmvs安装与配置 可参考:https://blog.csdn.net/rdw1246010462/article…...
yolov8命令行运行参数详解
序言 整理来自yolov8官方文档常用的一些命令行参数,官方文档YOLOv8 Docs yolov8命令行的统一运行格式为: yolo TASK MODE ARGS其中主要是三部分传参: TASK(可选) 是[detect、segment、classification]中的一个。如果没有显式传递…...
分布式锁简介
Redis因为单进程、性能高常被用于分布式锁;锁在程序中作用是同步工具,保证共享资源在同一时刻只能被一个线程访问。 Java中经常用的锁synchronized、Lock,但是Java的锁智能保证单机的时候有效,分布式集群环境就无能为力了…...
【嵌入式Linux学习笔记】Linux驱动开发
Linux系统构建完成后,就可以基于该环境方便地进行开发了,相关的开发流程与MCU类似,但是引入了设备树的概念,编写应用代码要相对复杂一点。但是省去了很多配置工作。 学习视频地址:【正点原子】STM32MP157开发板 字符…...
2023年中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛(同步赛)(H题)(线段树)
又到了万物复苏的季节,家乡的苹果树结果了。像往常一样小龙同学被叫回家摘苹果。 假设需要采摘的一棵树上当前有a颗苹果,那么小龙会采摘⌈a/3⌉颗苹果,其中⌈x⌉表示不小于x的最小整数。 但是,为了可持续发展,若a小于1…...
Linux内核Thermal框架详解十三、Thermal Governor(3)
接前一篇文章Linux内核Thermal框架详解十二、Thermal Governor(2) 二、具体温控策略 上一篇文章介绍并详细分析了bang_bang governor的源码。本文介绍第2种温控策略:fair_share。 2. fair_share fair_share governor总的策略是频率档位⽐较…...
TikTok品牌出海创世纪(二)
目录 1.推荐算法打造王者品牌 2.品牌聚焦海外Z群体 3.持续扩展应用场景 加速品牌全球化传播 品牌聚焦海外Z群体 “这个地球上,三分之二的人都在用Facebook“,这是对Facebook曾经统治地位最直观的描述。 但如今,这家全球社交媒体巨头的光环正…...
iOS中SDK开发 -- cocoapods库创建
在iOS项目中,经常使用cocoadpods来进行依赖管理以及三方库引入等。引入的三方库一般会有几种形式:一、在Pods目录下可以直接看到源代码的开源库,如AFNetworking,Masonry等常见开源库。二、在Pods目录下拉取的项目文件只能看到对应…...
2023年了,还是没学会内卷....
先做个自我介绍:我,普本,通信工程专业,现在飞猪干软件测试,工作时长两年半。 回望疫情纪元,正好是实习 毕业这三年。要说倒霉也是真倒霉,互联网浪潮第三波尾巴也没抓住,狗屁造富神…...
chatGPT爆火,什么时候中国能有自己的“ChatGPT“
目录 引言 一、ChatGPT爆火 二、中国何时能有自己的"ChatGPT" 三、为什么openai可以做出chatGPT? 四、结论 引言 随着人工智能技术的不断发展,自然语言处理技术也逐渐成为了研究的热点之一。其中,ChatGPT作为一项领先的自然语言处理技术…...
【Matlab算法】粒子群算法求解一维非线性函数问题(附MATLAB代码)
MATLAB求解一维非线性函数问题前言正文函数实现(可视化处理)可视化结果前言 一维非线性函数是指函数的自变量和因变量都是一维实数,而且函数的形式是非线性的,也就是不符合线性函数的形式。在一维非线性函数中,自变量…...
2023 最新发布超全的 Java 面试八股文,整整 1000道面试题,太全了
作为一名优秀的程序员,技术面试都是不可避免的一个环节,一般技术面试官都会通过自己的方式去考察程序员的技术功底与基础理论知识。 2023 年的互联网行业竞争越来越严峻,面试也是越来越难,很多粉丝朋友私信希望我出一篇面试专题或…...
产品经理面经|当面试官问你还有什么问题?
相信很多产品经理在跳槽面试的时候,在面试尾声都会遇到这样的环节,面试官会问你有什么问题要问的,一般来说大家都能随时随地甩出几个问题来化解,但其实在这个环节对于应聘者来说也是一个很好的机会来展现自己的能力,甚…...
单链表的基本操作
目录 一.链表的基本概念和结构 二.链表的分类 三.单链表的基本操作 1.创建一个节点 2.打印 3.尾插 4.头插 5.尾删 6.头删 7.查找 8.指定位置插入 9.指定位置删除 10.销毁 一.链表的基本概念和结构 概念:链表是一种物理存储结构上非连续、非顺序的存储结…...
【微信小程序-原生开发】系列教程目录(已完结)
01-注册登录账号,获取 AppID、下载安装开发工具、创建项目、上传体验 https://sunshinehu.blog.csdn.net/article/details/128663679 02-添加全局页面配置、页面、底部导航 https://sunshinehu.blog.csdn.net/article/details/128705866 03-自定义底部导航&#x…...
JavaEE--Thread 类的基本用法(不看你会后悔的嘿嘿)
Thread类是JVM用来管理线程的一个类,换句话说,每个线程都唯一对应着一个Thread对象. 因此,认识和掌握Thread类弥足重要. 本文将从 线程创建线程中断线程等待线程休眠获取线程实例 等方面来进行具体说明. 1)线程创建 方法1:通过创建Thread类的子类并重写run () 方法 class M…...
MySQL数据库基本使用(二)-------数据库及表的增删改查及字符集修改
1.MySQL数据库的使用演示 1.1创建自己的数据库 命令格式如下(创建的数据库名称不能与已经存在的数据库重名): mysql> create database 数据库名;例如: mysql> create database atguigudb; #创建atguigudb数据库…...
互联网摸鱼日报(2023-03-17)
互联网摸鱼日报(2023-03-17) InfoQ 热门话题 开源新生代的成长之路:从校园到开源,需要迈过哪些挑战? 从 Clickhouse 到 Apache Doris,慧策电商 SaaS 高并发数据服务的改造实践 刚刚,百度文心…...
【前后端】低代码平台Jeecg-Boot 3.2宝塔云服务器部署流程
1 后端 部署流程 修改配置文件 更改数据库、redis的配置。 在system子模块中的target文件夹下生成 jar 包jeecg-boot-module-system-3.2.0.jar。 复制到云服务器 生成数据库 在这里插入图片描述 使用命令运行后端程序 java -jar ./jeecg-boot-module-system-3.2.0.jar宝…...
leetcode todolist
数组 数组的改变、移动 453. 最小移动次数使数组元素相等 665. 非递减数列 283. 移动零 数组的旋转 189. 旋转数组 396. 旋转函数 统计数组中的元素 645. 错误的集合 697. 数组的度 448. 找到所有数组中消失的数字 442. 数组中重复的数据 41. 缺失的第一个正数 数…...
5个步骤彻底告别3D打印工作流中的格式转换烦恼
5个步骤彻底告别3D打印工作流中的格式转换烦恼 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 你是否曾经为3D打印工作流中的格式转换问题感到困扰?想象一下这…...
Netgear路由器终极救援指南:nmrpflash工具快速恢复变砖设备
Netgear路由器终极救援指南:nmrpflash工具快速恢复变砖设备 【免费下载链接】nmrpflash Netgear Unbrick Utility 项目地址: https://gitcode.com/gh_mirrors/nmr/nmrpflash 当你的Netgear路由器固件升级失败、意外断电或系统崩溃时,设备会变成一…...
B站成分检测器终极指南:3秒快速识别评论区用户真实身份
B站成分检测器终极指南:3秒快速识别评论区用户真实身份 【免费下载链接】bilibili-comment-checker B站评论区自动标注成分,支持动态和关注识别以及手动输入 UID 识别 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-comment-checker 你…...
STM32调试踩坑记:Keil5里数组越界是如何“偷走”我变量值的?
STM32调试侦探手记:Keil5中数组越界如何“篡改”你的变量 当我在调试一个CANFD通信项目时,遇到了一个诡异的现象——明明没有对SensorValue数组进行任何赋值操作,但它的值却莫名其妙地改变了。这就像侦探小说中的密室杀人案,变量在…...
开源全栈监控工具CheckCle:轻量自托管,五分钟搭建系统与应用监控
1. 项目概述:一个为开发者而生的全栈监控方案如果你和我一样,长期在运维和开发一线摸爬滚打,那你肯定对监控这件事又爱又恨。爱的是,一套好的监控系统是系统的“眼睛”和“耳朵”,能让你在用户投诉之前就发现问题&…...
Python封装Gemini API:简化大模型调用,快速构建AI应用
1. 项目概述:当开源社区遇上大模型API最近在折腾一些AI应用的原型,发现一个挺有意思的现象:很多开发者想用Google的Gemini大模型,但面对官方API文档和复杂的认证流程,第一步就被劝退了。这时候,开源社区的力…...
如何快速掌握FramePack:面向初学者的完整视频帧压缩实战指南
如何快速掌握FramePack:面向初学者的完整视频帧压缩实战指南 【免费下载链接】FramePack Lets make video diffusion practical! 项目地址: https://gitcode.com/gh_mirrors/fr/FramePack FramePack是一项革命性的视频帧压缩技术,它通过创新的神经…...
Open-Interface:构建统一API网关,解决开发者集成碎片化难题
1. 项目概述:一个面向开发者的开放接口聚合平台最近在GitHub上看到一个挺有意思的项目,叫“Open-Interface”。光看名字,你可能会觉得这又是一个平平无奇的API接口库,但深入了解一下,你会发现它的定位其实相当精准&…...
基于Obsidian与Gemini AI构建全自动播客生成系统
1. 项目概述:一个全自动的AI播客生成流水线 如果你和我一样,既是内容创作者,又是效率工具的重度用户,那你一定对“信息过载”和“创作瓶颈”这两个词深有体会。每天在Obsidian里记录下大量的笔记、想法和阅读摘要,它们…...
如何构建企业级开源实时协作编辑器?Etherpad团队协作解决方案终极指南
如何构建企业级开源实时协作编辑器?Etherpad团队协作解决方案终极指南 【免费下载链接】etherpad Etherpad: A modern really-real-time collaborative document editor. 项目地址: https://gitcode.com/gh_mirrors/et/etherpad 在数字化转型浪潮中ÿ…...
