OpenCV相机标定与3D重建(44)初始化广角(鱼眼)相机的投影映射函数initWideAngleProjMap()的使用
- 操作系统:ubuntu22.04
- OpenCV版本:OpenCV4.9
- IDE:Visual Studio Code
- 编程语言:C++11
算法描述
cv::initWideAngleProjMap 是 OpenCV 库中的一个函数,用于初始化广角(鱼眼)相机的投影映射。这个函数生成两个映射 map1 和 map2,它们可以被用来对图像进行去畸变和重投影变换。
函数原型
float cv::initWideAngleProjMap
(InputArray cameraMatrix,InputArray distCoeffs,Size imageSize,int destImageWidth,int m1type,OutputArray map1,OutputArray map2,enum UndistortTypes projType = PROJ_SPHERICAL_EQRECT,double alpha = 0
)
参数
- 参数cameraMatrix: 相机的内参矩阵,它是一个3x3的矩阵,包含了焦距、主点位置等信息。
- 参数distCoeffs: 畸变系数向量,描述了图像畸变的程度。对于广角或鱼眼镜头,这些系数可能包含径向和切向畸变项。
- 参数imageSize: 输入图像的尺寸,以像素为单位,格式为 cv::Size(width, height)。
- 参数destImageWidth: 指定输出图像的宽度,这可以与输入图像的宽度不同,允许调整输出图像的比例。
- 参数m1type: 定义 map1 的数据类型,通常是 CV_32FC1 或者 CV_16SC2。
- 参数map1 和 map2: 这两个是输出参数,表示从原始图像到去畸变后图像的映射关系。map1 包含 x 方向的映射坐标,map2 包含 y 方向的映射坐标。
- 参数projType: 指定用于去畸变和重新投影的类型。不同的值代表不同的投影模型,默认值是 PROJ_SPERSICAL_EQRECT,即等距球面投影。
- 参数alpha: 控制输出图像中保留了多少原始图像的信息。alpha=0 时会尽可能多地保留图像内容,而 alpha=1 则只会保留完全没有畸变的区域。
代码示例
#include <opencv2/calib3d/calib3d.hpp>
#include <opencv2/opencv.hpp>using namespace cv;
using namespace std;int main()
{// 假设我们已经有一个相机内参矩阵和畸变系数Mat cameraMatrix = ( Mat_< double >( 3, 3 ) << 500, 0, 320, 0, 500, 240, 0, 0, 1 );Mat distCoeffs = ( Mat_< double >( 5, 1 ) << 1.0, 0.5, -0.2, 0.1, 0.05 );// 图像尺寸Size imageSize( 640, 480 );// 目标图像宽度int destImageWidth = 640;// 定义map类型int m1type = CV_32FC1;// 创建映射Mat map1, map2;float destImageHeight = cv::initWideAngleProjMap( cameraMatrix, distCoeffs, imageSize, destImageWidth, m1type, map1, map2,cv::PROJ_SPHERICAL_EQRECT, // 投影类型0 // alpha 参数);// 加载原始图像Mat img = imread( "path_to_image.jpg" );if ( img.empty() ){cout << "Could not open or find the image!" << endl;return -1;}// 应用映射进行去畸变Mat undistortedImg;remap( img, undistortedImg, map1, map2, INTER_LINEAR );// 显示结果imshow( "Original Image", img );imshow( "Undistorted Image", undistortedImg );waitKey( 0 );return 0;
}
相关文章:
OpenCV相机标定与3D重建(44)初始化广角(鱼眼)相机的投影映射函数initWideAngleProjMap()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::initWideAngleProjMap 是 OpenCV 库中的一个函数,用于初始化广角(鱼眼)相机的投影映射。这个函数生成两个…...
现代前端框架
截至2025年,现代前端框架领域仍然以React、Vue和Angular等成熟框架为主导,同时一些新兴框架也在不断崛起和发展。以下是目前较为先进和受欢迎的前端框架: 成熟框架 React 由Facebook开发,是目前最流行的前端框架之一。它使用声明…...
Vue进阶(贰幺贰)npm run build多环境编译
文章目录 一、前言二、实施三、总结:需要打包区分不同环境四、拓展阅读 一、前言 项目开发阶段,会涉及打包部署到多个环境应用场景,在不同环境中,需要进行项目层面的区分,做不同的操作,可以利用打包的--mo…...
社交新零售下开源 AI 智能名片 2+1 链动模式 S2B2C 商城小程序的创新实践与发展剖析
摘要:在社交电商蓬勃发展并向社交新零售转型的浪潮中,多种创新模式与技术应用不断涌现。本文聚焦于开源 AI 智能名片 21 链动模式 S2B2C 商城小程序,深入探讨其在社交新零售格局下的内涵、优势、应用策略以及对行业发展的深远影响,…...
xml格式化(1):使用python的xml库实现自闭合标签
前言 最近一段时间一直想要写一个urdf格式化插件。 至于为什么嘛,因为使用sw2urdf插件,导出的urdf,同一标签的内容,是跨行的,这就导致,内容比较乱,而且行数比较多。影响阅读。 因此ÿ…...
重温设计模式--13、策略模式
策略模式介绍 文章目录 策略模式介绍C 代码示例 策略模式是一种行为设计模式,它允许在运行时选择算法的行为。该模式将算法的定义和使用分离开来,使得算法可以独立于使用它的客户端而变化,提高了代码的灵活性和可维护性。 其主要包含以下几个…...
【Rust自学】10.7. 生命周期 Pt.3:输入输出生命周期与3规则
喜欢的话别忘了点赞、收藏加关注哦(加关注即可阅读全文),对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 10.7.1. 深入理解生命周期 1.指定生命周期参数的方式依赖于函数所做的事情 以上一篇文章的…...
产品经理-竞品分析
竞品分析是企业制定战略和产品优化的关键步骤,通过深入分析竞争对手的产品与策略,企业可以更好地定位自己并寻找改进的方向。这篇文章详细阐述了进行有效竞品分析的五个关键步骤,帮助产品经理精准掌握竞争态势,从而在市场中占据有…...
51单片机——8*8LED点阵
LED 点阵的行则为发光二极管的阳极,LED 点阵的列则为发光二极管的阴极 根据 LED 发光二极管导通原理,当阳极为高电平,阴极为低电平则点亮,否则熄灭。 因此通过单片机P0口可控制点阵列,74HC595可控制点阵行 11 脚 SR…...
力扣第136题:只出现一次的数字 巧用异或
力扣第136题:只出现一次的数字 C语言解法 题目描述 给定一个非空的整数数组 nums ,其中除一个元素只出现一次外,其他每个元素均出现两次。找出那个只出现一次的元素。 示例 示例 1: 输入: nums [2,2,1] 输出: 1示例 2: 输入: nums [4…...
TCP 如何获取端口信息
注:本文为 “TCP 如何获取端口信息” 相关讨论摘录。 机翻,未校。 How TCP Gets Port Information TCP 如何获取端口信息 asked Nov 10, 2024 at 19:57 user15503745 API Call for Connection API 调用以建立连接 Before the app can send data d…...
RabbitMQ发布确认高级篇(RabbitMQ Release Confirmation Advanced Edition)
系统学习消息队列——RabbitMQ的发布确认高级篇 简介 RabbitMQ是一个开源的消息代理软件,实现了高级消息队列协议(AMQP),主要用于在分布式系统中进行消息传递。RabbitMQ由Erlang语言编写,具有高性能、健壮…...
福建省乡镇界面数据arcgis格式shp乡镇名称和编码无偏移坐标内容测评
【标题解析】 标题"最新福建省乡镇界面数据arcgis格式shp乡镇名称和编码无偏移坐标"揭示了几个关键信息。这是关于福建省乡镇级别的地理数据,它包含乡镇的边界信息。这些数据是以ArcGIS兼容的SHP(Shapefile)格式存储的,…...
Kafka 消费者
Kafka消费者主要负责消费(读取和处理)由生产者发布的消息。 1 消费者入门 消费组将具有相同group.id的消费者实例组织成组。它们共同读取一个或多个主题的消息。每个消费者都有一个对应的消费组。 消息发布到主题后,只会被投递给订阅它的每…...
人形机器人当前现状与挑战:从技术突破到未来发展
近年来,人形机器人(Humanoid Robots)作为人工智能和机器人领域的一大热门话题,吸引了全球科技公司和研究机构的广泛关注。尤其是在日本、美国、欧洲等技术领先的地区,人形机器人的研究与发展日益繁荣,从早期…...
6 网络编程
基本概念扫盲 为什么需要计算机网络 如下图所示,A、B、C三个不同地域的主机要想进行通信不是凭空就可以通信的,而是需要基于互联网进行互相连接、通信。 为什么需要协议 如下图所示,红和蓝是联合攻打绿,它们以烽火为信号出动攻打绿,那么这时候就需要一个约定,比如红先…...
智能边缘计算:开启智能新时代
什么是智能边缘计算? 在当今数字化浪潮中,边缘计算已成为一个热门词汇。简单来说,边缘计算是一种分布式计算架构,它将数据处理和存储更靠近数据源的位置,而不是集中于远程数据中心。通过这种方式,边缘计算…...
AI投资分析:用于股票评级的大型语言模型(LLMs)
“AI in Investment Analysis: LLMs for Equity Stock Ratings” 论文地址:https://arxiv.org/pdf/2411.00856 摘要 投资分析作为金融服务领域的重要组成部分,LLMs(大型语言模型)为股票评级带来了改进的潜力。传统的股票评级方式…...
初始SpringBoot:详解特性和结构
??JAVA码农探花: ?? 推荐专栏:《SSM笔记》《SpringBoot笔记》 ??学无止境,不骄不躁,知行合一 目录 前言 一、SpringBoot项目结构 1.启动类的位置 2.pom文件 start parent 打包 二、依赖管理特性 三、自动配置特性…...
【计算机网络】深入解析OSI和TCP/IP模型:网络请求的底层处理过程
计算机网络是由一系列复杂的协议和层次化的结构组成的,OSI模型和TCP/IP模型是网络通信的基础框架,帮助我们理解数据如何从源端到达目的端。在这篇文章中,我将通过深入分析每一层的功能和具体处理流程,帮助你更加详细地理解网络请求…...
训医疗大模型卡脖子?我们备了 3.25PB 三甲合规成品数据集,可直接用于模型训练
做医疗 AI、药械研发、临床科研的同行,大概率都懂这种普遍的行业痛点:磨了很久的算法、堆了充足的算力,结果医疗大模型一到真实临床场景就 “水土不服”,诊断准确率、临床适配性始终上不去;新药、新器械研发卡在真实世…...
Step3-VL-10B-Base模型部署避坑指南:解决C盘空间不足与依赖冲突
Step3-VL-10B-Base模型部署避坑指南:解决C盘空间不足与依赖冲突 最近有不少朋友在尝试部署Step3-VL-10B-Base这个视觉语言大模型时,遇到了两个特别头疼的问题。一个是刚跑起来没多久,C盘就飘红了,系统提示空间不足;另…...
【无标题】第二章 Hadoop3安装
2.1 启动Docker容器2.1.1 加载镜像用来将一个Docker镜像从/cg/images/hadoop_node.tar.gz压缩包加载到本地Docker环境里面docker load < /cg/images/hadoop_node.tar.gz运行结果如下:docker run --name master --privileged --ulimit nofile65535:65535 --hostna…...
MiniCPM-V-2_6科研辅助实战:论文图表自动解读+公式识别案例分享
MiniCPM-V-2_6科研辅助实战:论文图表自动解读公式识别案例分享 1. 引言:科研工作者的智能助手 作为一名科研工作者,你是否曾经面对过这样的困境:阅读论文时遇到复杂的图表,需要花费大量时间理解其中的数据关系&#…...
科研利器 | Connected Papers文献图谱解析与应用技巧
1. Connected Papers:文献调研的智能导航仪 第一次接触Connected Papers时,我正在为博士课题的文献综述发愁。面对海量文献,传统的关键词搜索就像在黑暗森林里打手电筒,而Connected Papers提供的文献图谱,突然让我拥有…...
3步如何从视频中自动提取PPT幻灯片?智能识别技术揭秘
3步如何从视频中自动提取PPT幻灯片?智能识别技术揭秘 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 还在为手动截图视频中的PPT而烦恼吗?每次观看在线课程或…...
杰理蓝牙芯片的key文件机制解析:从原理到实践
1. 杰理蓝牙芯片key文件机制揭秘 第一次接触杰理蓝牙芯片的开发者,往往会在项目初期就被一个神秘文件难住——key文件。这个看似简单的文件背后,却藏着杰理芯片架构设计的核心逻辑。我在调试AC6905芯片时就踩过坑:当时直接烧录了未加密的固件…...
别再让UI卡死了!C# UDP接收数据,用异步和Task轻松搞定后台监听
现代C# UDP通信实践:用异步编程拯救你的UI线程 在桌面应用开发中,实时数据接收是许多场景的核心需求——从工业传感器监控到金融行情展示,再到游戏服务器状态更新。传统多线程方案虽然能解决问题,却常常带来UI卡顿、资源泄漏等&qu…...
AIAgent写歌正在淘汰哪3类职业?2026奇点大会人才白皮书预警:编曲助理、Jingle Writer、KTV伴奏工程师首当其冲!
第一章:2026奇点智能技术大会:AIAgent音乐创作 2026奇点智能技术大会(https://ml-summit.org) 实时协同作曲工作流 大会现场演示了基于多智能体架构(Multi-Agent Architecture)的音乐生成系统,其中 MelodyAgent、Har…...
从微信对话到数字遗产:WeChatMsg让您的聊天记忆永久留存
从微信对话到数字遗产:WeChatMsg让您的聊天记忆永久留存 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeC…...
