OpenCV-Python投影透视变换函数getPerspectiveTransform及warpPerspective详解
☞ ░ 老猿Python博文目录:https://blog.csdn.net/LaoYuanPython ░
一、getPerspectiveTransform 函数
getPerspectiveTransform函数根据源图像和目标图像上的四对点坐标来计算从原图像透视变换到目标头像的透视变换矩阵。
1.1、调用语法
getPerspectiveTransform(src, dst, solveMethod=None)
1.2、语法说明
- src:源图像上四个点的坐标构成的矩阵,要求其中任意三点不共线
- dst:目标图像上四个点的坐标构成的矩阵,要求其中任意三个点不共线,且每个点与src的对应点对应
- solveMethod:矩阵分解方法,传递给cv2.solve(DecompTypes) 求解线性方程组或解决最小二乘问题,默认值为None,表示使用DECOMP_LU。
solveMethod对应取值及含义如下:
注:矩阵分解 ,英文称为matrix decomposition或matrix factorization是将矩阵拆解为数个矩阵的乘积,可分为三角分解、满秩分解、Jordan分解和SVD(奇异值)分解等,常见的有三种:1)三角分解法 (Triangular Factorization),2)QR 分解法 (QR Factorization),3)奇异值分解法 (Singular Value Decompostion)。 在图像处理方面,矩阵分解被广泛用于降维(压缩)、去噪、特征提取、数字水印等,是十分重要的数学工具,其中特征分解(谱分解)和奇异值分解是两种常用方法。
老猿对矩阵分解目前也只知道概念,参阅资料《浅谈矩阵分解以及应用》,相关具体知识并不熟悉,对此有兴趣的可以进一步查阅相关资料。 - 返回值:为一
3*3
的透视变换矩阵
二、warpPerspective 函数
warpPerspective函数用于对输入图像进行透视变换,透视变换使用如下公式来计算结果图像和输入图像的对应关系:
其中Mij代表透视变换矩阵的9个元素。
2.1、调用语法
warpPerspective(src, M, dsize, dst=None, flags=None, borderMode=None, borderValue=None)
2.2、语法说明
- src:输入图像矩阵
- M:3*3的透视变换矩阵,可以通过getPerspectiveTransform等函数获取
- dsize:结果图像大小,为宽和高的二元组
- dst:输出结果图像,可以省略,结果图像会作为函数处理结果输出
- flags:可选参数,插值方法的组合(int 类型),默认值 INTER_LINEAR,本函数官方材料说明取值为INTER_LINEAR 或 INTER_NEAREST与 WARP_INVERSE_MAP的组合,但老猿测试其他标志也是支持的,具体取值及含义请参考《https://blog.csdn.net/LaoYuanPython/article/details/111771138 OpenCV-Python图像处理:插值方法及使用resize函数进行图像缩放》的介绍
- borderMode:可选参数,边界像素模式(int 类型),默认值 BORDER_CONSTANT,本函数官方材料说明取值为BORDER_CONSTANT 或 BORDER_REPLICATE,实际上所有取值类型都支持,包括形态变换中不支持的BORDER_WRAP、BORDER_TRANSPARENT都能支持,并且不同取值有不同效果,具体取值及含义请参考《https://blog.csdn.net/LaoYuanPython/article/details/109441709 OpenCV-Python图像处理:腐蚀和膨胀原理及erode、dilate函数介绍》的介绍
- borderValue:可选参数,边界填充值,当borderMode为cv2.BORDER_CONSTANT时使用,默认值为None;
- 返回值:为透视变换后的结果图像矩阵,最后的结果矩阵每个像素与原图像像素的对应关系为:
如果flags标记设置了WARP_INVERSE_MAP标记,首先使用invertAffineTransform对变换矩阵进行反转即求其逆矩阵,然后将其放入上面的公式中,而不是将M直接放入
- 返回值:透视变换后的结果图像
三、小结
本文详细介绍了OpenCV-Python相关的透视变换处理函数getPerspectiveTransform 和warpPerspective的语法及参数含义。
更多透视变换概念、原理及案例的介绍请参考《https://blog.csdn.net/LaoYuanPython/article/details/114003964 OpenCV-Python图像处理:透视变换概念、矩阵及实现案例详解》的介绍。
要理解投影变换的原理最好能理解仿射变换的原理,关于仿射变换可参考老猿的仿射变换相关系列博文。
仿射变换博文传送门(带星号的为付费专栏文章):
- *图像仿射变换原理1:齐次坐标来龙去脉详解
- *图像仿射变换原理2:矩阵变换、线性变换和图像线性变换矩阵
- *图像仿射变换原理3:仿射变换类型及变换矩阵详解
- *图像仿射变换原理4:组合变换及对应变换矩阵
- *图像仿射变换原理5:组合变换矩阵的OpenCV-Python实现
- OpenCV-Python图像处理:仿射变换详解及案例
- OpenCV-Python仿射变换开发中遇到的坑
- openCV仿射变换:getAffineTransform的案例
- 为什么称图像旋转、错切、缩放变换是线性变换?
- 图像仿射变换:绕点旋转和指定直线依赖轴shear错切变换矩阵
- 图像仿射变换shear怎么翻译?剪切、错切、推移哪个译词好?
- 仿射变换原理和其OpenCV-Python实现知识汇总
更多图像处理的介绍请参考专栏《OpenCV-Python图形图像处理 https://blog.csdn.net/laoyuanpython/category_9979286.html》和《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初学者疑难问题集》相关文章。
更多图像处理的数学基础知识请参考专栏《人工智能数学基础 https://blog.csdn.net/laoyuanpython/category_10382948.html》
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
如果对文章内容存在疑问,可以在博客评论区留言,或关注:老猿Python 微信公号发消息咨询。
关于老猿的付费专栏
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_9607725.html 使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《 https://blog.csdn.net/LaoYuanPython/article/details/107580932 使用PyQt开发图形界面Python应用专栏目录》;
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_10232926.html moviepy音视频开发专栏 )详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/107574583 moviepy音视频开发专栏文章目录》;
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初学者疑难问题集》为《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/109713407 OpenCV-Python初学者疑难问题集专栏目录 》
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_10762553.html Python爬虫入门 》站在一个互联网前端开发小白的角度介绍爬虫开发应知应会内容,包括爬虫入门的基础知识,以及爬取CSDN文章信息、博主信息、给文章点赞、评论等实战内容。
前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的学习使用。
对于缺乏Python基础的同仁,可以通过老猿的免费专栏《https://blog.csdn.net/laoyuanpython/category_9831699.html 专栏:Python基础教程目录)从零开始学习Python。
如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。
跟老猿学Python!
☞ ░ 前往老猿Python博文目录 https://blog.csdn.net/LaoYuanPython ░
OpenCV-Python投影透视变换函数getPerspectiveTransform及warpPerspective详解相关推荐
- 【python教程入门学习】Python函数定义及传参方式详解(4种)
这篇文章主要介绍了Python函数定义及传参方式详解(4种),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 一.函数初识 1.定 ...
- python argv 详解_对python中的argv和argc使用详解
主要问题 为什么argv中第一个,即index=0的内容就是文件名? python中argc是用什么实现的? 概念解释 argc:argument counter,命令行参数个数 argv:argum ...
- Python中的__name__和__main__含义详解
背景 在写Python代码和看Python代码时,我们常常可以看到这样的代码: ? 1 2 3 4 5 def main(): ...... if __name__ == "__ma ...
- 对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解_起飞的木木的博客-CSDN博客_labelencoder原理
- python协程详解_对Python协程之异步同步的区别详解
一下代码通过协程.多线程.多进程的方式,运行代码展示异步与同步的区别. import gevent import threading import multiprocessing # 这里展示同步和异 ...
- python的raw_ input是什么意思-对python中raw_input()和input()的用法详解
最近用到raw_input()和input()来实现即时输入,就顺便找了些资料来看,加上自己所用到的一些内容,整理如下: 1.raw_input() raw_input([prompt]) -> ...
- python中str和input_对python中raw_input()和input()的用法详解
最近用到raw_input()和input()来实现即时输入,就顺便找了些资料来看,加上自己所用到的一些内容,整理如下: 1.raw_input() raw_input([prompt]) -> ...
- python中文编码-python中文编码与json中文输出问题详解
前言 python2.x版本的字符编码有时让人很头疼,遇到问题,网上方法可以解决错误,但对原理还是一知半解,本文主要介绍 python 中字符串处理的原理,附带解决 json 文件输出时,显示中文而非 ...
- python代码大全表解释-python操作列表的函数使用代码详解
python的列表很重要,学习到后面你会发现使用的地方真的太多了.最近在写一些小项目时经常用到列表,有时其中的方法还会忘哎! 所以为了复习写下了这篇博客,大家也可以来学习一下,应该比较全面和详细了 列 ...
最新文章
- xilinx sg dma 注意事项
- xxe漏洞攻防 简介 xml 引用外部实体 构造恶意内容
- c++ map是有序还是无序的_c++中map与unordered_map的区别
- zookeeper的安装及配置教程(步骤详尽)
- android menu xml 属性,Android中Menu类型及常见属性说明
- 1-1.Win10系统利用Pycharm社区版安装Django搭建一个简单Python Web项目的步骤之一
- PowerDesigner 11 一些小技巧
- UnicodeDecodeError: 'gbk' codec can't decode byte 0xab in position 11126: illegal multibyte sequence
- beamer插入参考文献并引用(BibTex)
- 一、Python复习教程(重点)- 基础
- 【语音之家】AI产业沙龙—— 网易语音AI技术:从内容安全到内容品质
- 浅议初中语文微写作(语文教师论文)
- 浏览器的作用不只是搜索、浏览网页,它还隐藏着这些功能
- 华为设备常用软件包名
- SESSION_CACHED_CURSORS 参数
- 人工智能——Search搜索问题
- ESXI 虚拟交换机配置 Trunk 端口组
- muse-ui.css_Muse UI:适用于Vuejs 2.0的Material Design UI库
- BTC World直播间冬季训练营空投福利!听课就送2000币
- 02.爬虫工具的使用