colmap的几种相机类型和内外参取得方法

news2024/12/23 5:17:35

colmap的相机类型可以参考models.h文件。

主要有以下几种相机类型:

SimplePinhole
内参格式:f, cx, cy
实际用的时候:fx=fy=f

在这里插入图片描述
Pinhole:
内参格式:fx, fy, cx, cy

在这里插入图片描述
其他可以自行查看models.h文件。

内参存放在images.bin, 外参存放在cameras.bin中

def read_colmap(path):
    try:
        cameras_extrinsic_file = os.path.join(path, "sparse/0", "images.bin")
        cameras_intrinsic_file = os.path.join(path, "sparse/0", "cameras.bin")
        cam_extrinsics = read_extrinsics_binary(cameras_extrinsic_file)
        cam_intrinsics = read_intrinsics_binary(cameras_intrinsic_file)
    except:
        cameras_extrinsic_file = os.path.join(path, "sparse/0", "images.txt")
        cameras_intrinsic_file = os.path.join(path, "sparse/0", "cameras.txt")
        cam_extrinsics = read_extrinsics_text(cameras_extrinsic_file)
        cam_intrinsics = read_intrinsics_text(cameras_intrinsic_file)

extr = cam_extrinsics[key]
intr = cam_intrinsics[extr.camera_id]

R = qvec2rotmat(extr.qvec)
t = np.array(extr.tvec)

#world to camera
T = np.zeros((4, 4))
T[:3, :3] = R
T[:3, 3] = t
T[3, 3] = 1.0

def qvec2rotmat(qvec):
    return np.array([
        [1 - 2 * qvec[2]**2 - 2 * qvec[3]**2,
         2 * qvec[1] * qvec[2] - 2 * qvec[0] * qvec[3],
         2 * qvec[3] * qvec[1] + 2 * qvec[0] * qvec[2]],
        [2 * qvec[1] * qvec[2] + 2 * qvec[0] * qvec[3],
         1 - 2 * qvec[1]**2 - 2 * qvec[3]**2,
         2 * qvec[2] * qvec[3] - 2 * qvec[0] * qvec[1]],
        [2 * qvec[3] * qvec[1] - 2 * qvec[0] * qvec[2],
         2 * qvec[2] * qvec[3] + 2 * qvec[0] * qvec[1],
         1 - 2 * qvec[1]**2 - 2 * qvec[2]**2]])

如果是SimplePinhole,
那么,fx = fy = intr[0], cx = intr[1], cy = intr[2]
其他类推。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2062202.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《微信小程序开发》系列:第1篇—微信小程序简介

1.什么是微信小程序 微信小程序是一种运行在微信内部的 轻量级 应用程序。 在使用小程序时 不需要下载安装,用户 扫一扫 或 搜一下 即可打开应用。它也体现了 “用完即走” 的理念,用户不用关心安装太多应用的问题。它实现了应用“触手可及”的梦想&…

回归分析系列14— 多项式回归

17 多项式回归 17.1 简介 多项式回归是线性回归的一种扩展,它允许回归模型包括输入变量的高次项。这种方法特别适合处理非线性关系的数据。 17.2 多项式回归模型 在多项式回归中,模型形式如下: 其中,p 是多项式的阶数&#xf…

Vue项目-三级联动的路由跳转与传参

三级联动组件的路由的跳转与传参 三级联动,用户可以点击的:一级分类、二级分类和三级分类 以商城项目为例,Home模块跳转到Search模块,以及会把用户选中的产品(产品名字、产品ID)在路由跳转的时候&#xff…

【控糖有道,健康无忧!糖尿病患者的饮食黄金法则大揭秘】

在快节奏的现代生活中,糖尿病作为一种常见的慢性疾病,正悄然影响着越来越多人的生活质量。面对这一挑战,科学合理的饮食管理成为了控制病情、提升生活品质的关键。今天,就让我们一同揭开糖尿病饮食的黄金法则,让“控糖…

CentOS服务器三级等保加固

1.密码周期: vim /etc/login.defs max_days:90 mindays:2 minlen:8 warnage:72.密码复杂度: vim /etc/pam.d/system-auth : password requisite pam_cracklib.so retry3 difok3 minlen8 lcredit-1 dcredit-1 ucredit-1 ocredit-1 【Ubuntu系统->vim /etc/pam.d/c…

Linux组的介绍,所有者,所在组,修改所在组

目录 linux组的介绍 文件/目录所有者 组的创建 文件/目录所在组 其它组 改变用户所在组 linux组的介绍 每个用户必须属于一个组,不能独立于组外。 这个文件是谁创建的,这个文件的所有者就是谁。 这个文件属于组1,那么组2对它来说就…

VoLTE基本信令流程(整理的学习笔记)

VoLTE基本信令流程 1. 注册基本过程 UE进行Attach,建立QCI9的默认承载使用IMS APN建立PDN连接,建立 QCI5 的默认承载,用于传送 SIP 信令,同时获取到了IMS入口的P-CSCF地址信息UE 通过 QCI5 的默认承载向 IMS 发起注册请求IMS 域…

亚马逊ERP全功能 无隐藏收费的几个地方

亚马逊全功能 ERP 采集图片订单翻译,无任何隐藏收费。 说说有关采集和管理的软件!1. 对于做跟卖的人来说需要大量采集产品,采集过来的产品还需要进行文本、图片翻译、修图等操作,图片储存和站点维护另算。市面上有些 ERP 软件在这…

美国高防服务器到底怎么选

美国高防服务器因其强大的硬件设施、高度的网络连接性、丰富的带宽资源和先进的防御技术而受到全球用户的欢迎。以下是选择美国高防服务器时需要考虑的关键因素,rak部落为您整理发布美国高防服务器到底怎么选。 确定服务器需求 容量和带宽:根据业务规模…

共享电动单车管理系统 ---附源码131016

摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于共享电动单车管理系统当然也不能排除在外,随着网络技术的不断成熟,带动了共享电动单车管理系统,它彻底…

React 学习——Class类组件生命周期函数

componentDidMount:组件渲染完执行一次,发送网络请求 componentWillUnmount:组件卸载的时候执行,副作用(清理的工作 清除定时器 事件绑定) import { Component,useState } from react; class Counter e…

敏捷架构开发方法和实践:迎接数字化时代的挑战

在当前飞速发展的数字化时代,传统企业架构的局限性日益显现,特别是在应用敏捷方法的过程中,许多企业发现其架构和组织结构无法支持真正的敏捷转型。为应对这一挑战,《数字化时代的敏捷架构》提出了一个全新的架构框架——敏捷架构…

Typora 软件介绍和利用

Typora 软件介绍 Typora 是一款功能强大的 Markdown 编辑器,以简洁直观的设计和无缝的实时预览而著称。本文将详细介绍 Typora 的功能、优势以及使用体验。 目录 简介主要功能软件优势使用体验系统支持安装与设置 简介 Typora 是一款由 Abner Lee 开发的 Markdo…

最新完整版手机APP软件应用下载类网站模板源码/手游导航源码app软件下载

源码简介: 手机APP软件应用下载类网站模板源码,它是最新完整版,也是手游导航源码,app软件排行榜下载网页源码。 这是一款带有强大后台的app软件手游类源码,界面设计得很漂亮,非常适合做app软件、手机软件…

PPT分享:埃森哲-流程制造的智能工厂规划设计

在分享PPT之前,笔者与大家一起熟悉下,流程制造是什么,与离散制造有哪些区别。 往期回顾>> 125页PPT:某行业数据架构蓝图规划方案 170页PPT:制造业采购供应链及财务管控业务流程蓝图规划 60页PPT:集团SRM项目业…

OpenGL-ES 学习(8) ---- FBO

目录 FBO OverViewFBO 优点使用FBO的步骤 FBO OverView FBO(FrameBuffer Object) 指的是帧缓冲对象,实际上是一个可以添加缓冲区容器,可以为其添加纹理或者渲染缓冲区对象(RBO) FBO(FrameBuffer Object) 本身不能用于渲染,只有添加了纹理或者…

【JS】如何给fetch添加超时功能

前言 Ajax有两种方式实现请求,分别是xhr和fetch,前者有超时功能,fetch则不然。下文尝试给fetch添加超时功能。 实现 使用终止器,在controller.abort()时便会在使用其signal信号的fetch函数发送一个终止信号,请求就会…

PTA 求整数的位数及各位数字之和

对于给定的正整数N,求它的位数及其各位数字之和。 输入格式: 输入在一行中给出一个不超过109的正整数N。 输出格式: 在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。 输入样例: 321输出样例&#xff…

maven进阶(超详细)

多模块开发 1.抽取entity模块 将先前的SSMProject01项目中的entity文件夹抽取出来,成为一个独立的模块 在SSMProject01项目中引入maven_03_entity 首先找到maven_03_entity的pom文件 直接引入SSMProject01 尝试编译(compile)SSMProject01项…

前后端分离项目实战-通用管理系统搭建(前端Vue3+ElementPlus,后端Springboot+Mysql+Redis)第三篇:登录功能优化

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…