【OpenCV】广告屏换图 文稿矫正 透视变换 C++ 案例实现

2023-11-05

目录

前言

一、透视变换的概念

二、透视变换工作原理

三、相关函数

1.findHomography函数

2.warpPerspective函数

3.getPerspectiveTransform函数

四、透视变换案例

案例1:文稿矫正

案例2:广告屏换图

五、总结


前言

本文以实现广告屏换图为目标,学习OpenCV透视变化相关知识,核心的内容包括:OpenCV透视变化概念透视变化工作原理,以及广告屏换图文稿矫正实现 

一、透视变换的概念

  • 仿射变换透视变换在图像还原、图像局部变化处理方面有重要意义
  • 通常情况下,在2D平面中,仿射变换的应用较多,在3D平面中,透视变换又有了自己的一席之地,两种变换原理相似,结果也类似,可针对不同的场合使用适当的变换
  • 仿射变换透视变换的数学原理不需深究,在应用层面,仿射变换是图像基于3个固定顶点的变换,如下图所示:

二、透视变换工作原理

  • 透视变换:本质是将图像投影到一个新的视平面
  • 其通用变换公式,如下图所示:

  • (u,v)为原始图像像素坐标,(x=x’/w’,y=y’/w’)为变换之后的图像像素坐标
  • 相关公式,本文不做过多阐述,图解如下:

  • 仿射变换:可以理解为透视变换的特殊形式
  • 数学表达式,如下图所示:

 

  • 所以,给定透视变换对应的四对像素点坐标,即可求得透视变换矩阵
  • 反之,给定透视变换矩阵,即可对图像或像素点坐标完成透视变换
  • 如下图所示:

 

三、相关函数

1.findHomography函数

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【OpenCV】广告屏换图 文稿矫正 透视变换 C++ 案例实现 的相关文章

  • 请求的资源不支持 HTTP 方法“GET”

    我的路线配置正确 并且我的方法具有装饰标签 我仍然收到 请求的资源不支持 HTTP 方法 GET 消息 System Web Mvc AcceptVerbs GET POST System Web Mvc HttpGet public st
  • 除了第一列之外,Gridview 行可点击?

    我使用以下代码使 gridview 的整行可单击 protected void gridMSDS RowDataBound object sender GridViewRowEventArgs e if e Row RowType Data
  • 如何在函数中将结构成员作为指针传递?

    问题是我有一个结构是另一个 主要 结构的成员 我编写了一个函数来清除第一个结构 它需要一个指向结构的指针 我想使用该函数来清除主要结构内的结构 但我不确切知道哪种方法是正确的 为了更好地解释它 这里有一些代码 我有一个结构 定义为 type
  • 如何使用 saxon 将文档类型参数传递给 xslt?

    对于发送原子数据类型将使用类似 transformer SetParameter new QName customXml new XdmAtomicValue true 如何将 XML Node 作为参数从 C 传递给 XSLT 你能帮我么
  • ASP .NET MVC 5 - 客户地址一对一关系

    我在这里查看了论坛 实际上发现了一些类似的问题 但不是相同的问题 类似的解决方案没有给我正确的答案 我正在使用实体框架和代码优先方法来处理 ASP NET MVC 5 我想建立客户 gt 地址一对一关系的模型 我建模的是 客户等级 publ
  • 获取光标相对于控件的位置 - C#

    我想获取鼠标相对于鼠标指针所在控件的位置 这意味着当我将光标置于控件的起点 左上角 时 它应该给出 0 0 我正在使用以下代码 private void panel1 MouseMove object sender MouseEventAr
  • EASTL 与 STL 相比,std::vector::operator[] 怎么会有这么大的性能差异

    根据http www open std org jtc1 sc22 wg21 docs papers 2007 n2271 html http www open std org jtc1 sc22 wg21 docs papers 2007
  • string.empty 和 string[0] == '\0' 之间的区别

    假设我们有一个字符串 std string str some value is assigned 有什么区别str empty and str 0 0 C 11 及更高版本 string variable 0 如果字符串为空 则需要返回空字
  • 混合 VS2012 平台工具集

    我们正在从 VS2005 切换到 VS2012 update 2 我们正在构建大量 主要是控制台 本机 C 无 MFC ATL 可执行文件 它们使用几个常见的静态链接库 这些可执行文件主要在 Win7 计算机上运行 但有些也部署在较旧的 X
  • 是否有更好(更简单)的方法来获取特定域 SID?

    我被指派修改 WinForms 应用程序 主要检查登录用户是否属于特定域 这是我到目前为止所想出的 byte domainSid var directoryContext new DirectoryContext DirectoryCont
  • 输入缓冲区刷新

    考虑下面的代码 include
  • 如何使用 ASP.NET MVC 4.0 DonutOutputCache VaryByCustom 使缓存失效

    我正在为我的 ASP NET 应用程序使用 DevTrends MvcDonutCaching 包 它工作得很好 我目前遇到的一个问题是使我为子操作设置的 VaryByCustom 缓存无效 这是我用于 VaryByCustom 设置的一些
  • 接口中的私有成员

    是否可以在 NET 接口中创建私有成员 我听说现在可以了 但我的 IDE 拒绝了 public interface IAnimal void SetDefaultName string name ChangeName name privat
  • 将 libpng 链接到 android 原生项目

    我在尝试在本机 Android 项目中加载 libpng 时遇到问题 编译器似乎无法识别 libpng 函数 但可以识别类型 如 png byte 它可以正常编译类型 但如果我添加函数 则会抛出错误 这是编译输出 Windows 7 cmd
  • C++ 静态工厂构造函数

    我正在进行模拟 它需要创建多个相当相似的模型 我的想法是有一个名为 Model 的类并使用静态工厂方法来构造模型 例如 模型 createTriangle or 模型 createFromFile 我从以前的 java 代码中汲取了这个想法
  • Facebook Graph API“/userid/feed”返回空白

    我正在使用 Facebook C SDK 但似乎无法使用 Graph API 获取反馈数据 我已从用户那里获得了以下扩展权限 范围 离线访问 publish stream publish checkins create event read
  • 当“多次安装 MSBuild”时,Dotnet 项目转换尝试转换失败

    try convert w Test csproj target framework netstandard2 0 结果是 Multiple installs of MSBuild detected please select one In
  • Cuda:最小二乘求解,速度较差

    最近 我使用Cuda编写了一个名为 正交匹配追踪 的算法 在我丑陋的 Cuda 代码中 整个迭代需要 60 秒 而 Eigen lib 只需 3 秒 在我的代码中 矩阵 A 是 640 1024 y 是 640 1 在每一步中 我从 A 中
  • 为 C++ 类播种 rand()

    我正在开发一个 C 类 它使用rand 在构造函数中 我真的希望这个班级在几乎所有方面都能照顾好自己 但我不知道在哪里播种rand 如果我播种rand 在构造函数中 每次构造我的对象类型的新实例时都会对其进行播种 因此 如果我按顺序创建 3
  • 访问 Visual Studio 扩展中的当前代码窗格

    我正在编写一个 Visual Studio 2010 扩展 在代码视图中带有右键单击菜单 我希望能够从菜单项事件处理程序检查当前代码 但无法在对象模型中找到执行此操作的位置 如何在 Visual Studio 扩展中访问当前窗口中的代码 E

随机推荐

  • python三维点云投影(一)

    本文为博主原创文章 未经博主允许不得转载 本文为专栏 python三维点云从基础到深度学习 系列文章 地址为 https blog csdn net suiyingy article details 124017716 一 立体几何基础知识
  • MySQL的多表查询

    目录 多表关系 一对多 多对多 一对一 多表查询概述 分类 显示内连接 外连接 左外连接 右外连接 自连接 联合查询 子查询 分类 标量子查询 列子查询 行子查询 表子查询 多表关系 项目开发中 在进行数据库表结构设计时 会根据业务需求及业
  • 链表介绍

    链表介绍 链表与顺序表一样 也属于线性表 一个线性表是某类数据元素的一个集合 表里同时记录着元素之间的顺序关系 线性表的数据之间有顺序关系 顺序关系分为两种 一种是物理有序 即数据物理存储的位置顺序与数据之间的顺序关系一致 另一种是逻辑有序
  • VS Stuidio 2019实用调试技巧

    VS Studio 2019实用调试技巧 1 debug和release的区别 2 调试 1 调试最常使用的几个快捷键 2 用监视窗口查看临时变量的值 3 查看内存信息 4 查看调用堆栈 5 查看汇编信息 6 查看寄存器信息 3 如何写出易
  • 总结Python设置Excel单元格样式的一切,比官方文档还详细

    总结Python设置Excel单元格样式的一切 比官方文档还详细 Python对Excel表格处理非常方便 本文专门对Excel单元格样式设置进行总结 日常用到的设置基本都可以用openpyxl库完成 创建一个表格 openpyxl是第三方
  • 多项式轨迹--五次多项式轨迹

    转自 https blog csdn net libing403 article details 78715418 多项式轨迹 五次多项式轨迹 1 5 Polynomial of degree five 利用三次多项式 根据过q0 q1 q
  • 祝:天下码农中秋节快乐

    祝 天下码农中秋节快乐
  • 13.2 C语言风格的for命令、while命令和until命令

    C语言风格的for命令 在C语言中 for循环通常定义ige变量 然后这个变量会在每次迭代时自动改变 c语言的for命令 C语言的for命令有一个用来指明变量的特定方法 一个必须保持成立才能继续迭代的条件 以及另一个在每个迭代中改变变量的方
  • 算法设计与分析 动态规划 习题

    3 1 满足递归式F n F n 1 F n 2 和初始值F 0 F 1 1的数列称为斐波那契数列 考虑如何计算该数列的第n项F n 1 说明根据递归式直接完成计算 将有子问题重复求解 2 说明该问题具有优化子结构 3 写出求解F n 的动
  • 用matlab表白,你有一颗爱她的心,你就画出来

    恋爱过恋爱过程中 女生往往需要许多小惊喜 下面我教大家一种用matlab表白的一小段程序 画出一个火热的心 loving heart x y z x 2 9 4 y 2 z 2 1 3 3 x 2 z 3 9 80 y 2 z 3 爱心三维
  • Git 两分钟指南

    原文 http www garyrobinson net 2014 10 git in two minutes for a solo developer html作者 Gary Robinson 译文 http blog jobbole c
  • LeetCode【102】二叉树的层次遍历

    题目 给定一个二叉树 返回其按层次遍历的节点值 即逐层地 从左到右访问所有节点 例如 给定二叉树 3 9 20 null null 15 7 3 9 20 15 7 返回其层次遍历结果 3 9 20 15 7 通过观察返回的结果 可以直到是
  • ctfshow 每周大挑战 RCE极限挑战3

    目录 题目源码 1 跑一下正则 2 分析解题用什么payload 3 构造payload 如何获取字母N 构造出 POST及其他拼接内容 POST传参 4 完整解题payload 题目源码 1 跑一下正则 chr i echo chr i
  • 居中

    水平居中 1 HTML div class test img src images mlbtag jpg alt class test2 div CSS test width 100 test2 margin 0 auto display
  • Maximum Diameter Graph 【CodeForces - 1082D】【搜索+构造】

    题目链接 一开始忘记输出有多少条边 WA了好几发都跑不过第一组测试样例 开始怀疑自己是不是读了道假题 然后在大佬们的帮助下 终于AC 好伤心 读假样例 一定是我太弱了 我的思想是采用了树链剖分的dfs 构造思想 可能是因为最近少用了树链剖分
  • 从PFX文件中获取私钥、公钥证书、公钥

    https blog csdn net ZuoYanYouYan article details 77868584 该类具体功能 根据pfx证书得到私钥 根据私钥字节数组获取私钥对象 根据公钥字节数组获取公钥 根据pfx证书获取证书对象 根
  • iOS 史上最全App上架流程分享

    大概是19年写的文章吧 当时给Android 同事分享了下iOSApp上架的流程 就是几个人在会议室坐在一起讲课那种类型 并写了个文档保存在公司的内部网站上 今天翻出来了我感觉对新手还是挺有帮助的 就写这一篇blog吧 流程步骤 1 通过新
  • “实践与理论相结合”是开发人员的学习之道

    实践与理论相结合 这句话最常见的是一些官方的报导中 一听到这种教条主义就会嗤之以鼻 太空泛 无任何实际意义 今天就借射雕英雄传中郭靖学习武功 领悟九阴真经的过程来讲一讲 实践与理论相结合 与开发人员的关系 射雕英雄传第十七回 经中所述句句含
  • 大数据技术原理

    大数据技术原理 大数据技术原理与应用 大数据作为继云计算 物联网之后IT行业又一颠覆性的技术 备受关注 大数据无处不在 包括金融 汽车 零售 餐饮 电信 能源 政务 医疗 体育 娱乐等在内的社会各行各业 都融入了大数据的印迹 大数据对人类的
  • 【OpenCV】广告屏换图 文稿矫正 透视变换 C++ 案例实现

    目录 前言 一 透视变换的概念 二 透视变换工作原理 三 相关函数 1 findHomography函数 2 warpPerspective函数 3 getPerspectiveTransform函数 四 透视变换案例 案例1 文稿矫正 案
Powered by Hwhale