【OpenCV 例程200篇】24. 图像的仿射变换(cv2.warpAffine)

『youcans 的 OpenCV 例程200篇 - 总目录』


【youcans 的 OpenCV 例程200篇】24. 图像的仿射变换

几何变换的可以分为等距变换、相似变换、仿射变换和投影变换。在很多书籍中把等距变换、相似变换都称为仿射变换,常见的仿射变换包括平移、旋转、缩放、翻转、斜切等方法。

  • 等距变换:图像中的长度、面积不变,典型的等距变换是 平移、旋转
  • 相似变换:图像中的长度比、夹角、虚圆点不变,相似变换是在等距变换的基础上进行了缩放,典型的相似变换是 缩放
  • 仿射变换:图像中的平行关系、面积比、共线线段或平行线段的长度比、矢量的线性组合不变,仿射变换是旋转和非均匀缩放的复合,典型的仿射变换是 斜切
  • 投影变换:图像中的共点、共线、相交、相切、拐点的关系不变,,投影变换是在仿射变换基础上进行的非线性缩放,典型的投影变换是 透视

仿射变换(affine)的特点是原始图像中的平行关系和线段长度比例关系保持不变。

OpenCV 中的图像以多维数组描述,通过仿射变换变换为另一个多维数组(转换图像)。

仿射变换中的校正图像在二维空间中完成,在几何上定义为一个线性变换接一个平移变换。

仿射变换由以下公式描述:

[x~y~1]=MA[xy1],MA=[a11a12a13a21a22a23001]\begin{bmatrix} \tilde{x}\\ \tilde{y}\\ 1 \end{bmatrix} = M_A \begin{bmatrix} x\\ y\\ 1 \end{bmatrix} ,\hspace{1em} M_A= \begin{bmatrix} a_{11} &a_{12} &a_{13}\\ a_{21} &a_{22} &a_{23}\\ 0 &0 &1 \end{bmatrix} x~y~1=MAxy1,MA=a11a210a12a220a13a231

OpenCV 提供了 cv2.warpAffine 函数实现仿射变换的操作。

仿射变换矩阵 MA 中有 6 个未知参数,cv2.getAffineTransform 根据图像中不共线的 3 个点在变换前后的对应位置坐标,构造 6元一次方程组即可求出仿射变换矩阵 MA。cv2.warpAffine 再用变换矩阵 MA 计算得到变换后的图像。

基本例程:1.33 图像的仿射变换

    # 1.33 仿射变换: 平移、镜像、旋转 (cv2.warpAffine)img = cv2.imread("../images/imgB2.jpg")  # 读取彩色图像(BGR)rows, cols, ch = img.shapepts1 = np.float32([[50, 50], [200, 50], [50, 200]])  # 初始位置pts2 = np.float32([[50, 100], [200, 50], [100, 250]])  # 终止位置MA = cv2.getAffineTransform(pts1, pts2)  # 计算 2x3 变换矩阵 MAdst = cv2.warpAffine(img, MA, (cols, rows))  # 实现仿射变换plt.figure(figsize=(9,6))plt.subplot(121), plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)), plt.title("Original")plt.subplot(122), plt.imshow(cv2.cvtColor(dst, cv2.COLOR_BGR2RGB)), plt.title("warpAffine")plt.show()

在这里插入图片描述


(本节完)


版权声明:
youcans@xupt 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/125112487)
Copyright 2022 youcans, XUPT
Crated:2021-11-18


【第3章:图像的几何变换】

24. 图像的仿射变换
25. 图像的平移
26. 图像的旋转(以原点为中心)

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

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

相关文章

从自我学习到深层网络

从自我学习到深层网络 在前一节中,我们利用自编码器来学习输入至 softmax 或 logistic 回归分类器的特征。这些特征仅利用未标注数据学习获得。在本节中,我们描述如何利用已标注数据进行微调,从而进一步优化这些特征。如果有大量已标注数据&a…

【OpenCV 例程200篇】25. 图像的平移(cv2.warpAffine)

『youcans 的 OpenCV 例程200篇 - 总目录』 【youcans 的 OpenCV 例程200篇】25. 图像的平移 平移是物体位置在水平和垂直方向的移动。 像素点 (x,y) 沿 x 轴平移 dx、沿 y 轴平移 dy,可以由以下公式描述: [x~y~1]MAT[xy1],MAT[10dx01dy001]\begin{bmat…

JavaScript 灯泡暗亮

程序解说:点击灯泡之后切换灯泡明暗; 点击暗的灯泡的时候灯泡会随之发亮,并且下方会输出灯泡打开时间, 点击亮的灯泡的时候灯泡会随之熄灭,并且下方会输出灯泡关闭时间. 点击图片亮暗发生变化(准备两张图片…

【OpenCV 例程200篇】26. 图像的旋转(以原点为中心)

『youcans 的 OpenCV 例程200篇 - 总目录』 【youcans 的 OpenCV 例程200篇】26. 图像的旋转(以原点为中心) 图像以原点 (0, 0) 为中心、顺时针旋转角度 θ 进行旋转操作,可以由以下公式描述: [x~y~1]MAR[xy1],MAR[cosθ−sinθ0s…

电脑滑动关机

如何让你的电脑可以像手机一样滑动关机 只需点击下拉,让你享用更快更炫酷的关机方法(滑动关机) 新建一个记事本(滑动关机.txt) 打开滑动关机.txt文件,在该文件中写入 slidetoshutdown 代码段并保存文件。…

php里面的MySql

php里面的MySql SQL 是一种标准 - 但是... SQL是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统。SQL语句用于取回和更新数据库中的数据。SQL可与数据库程序协同工作,比如 MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase以及其他数据…

【OpenCV 例程200篇】27. 图像的旋转(以任意点为中心)

『youcans 的 OpenCV 例程200篇 - 总目录』 【youcans 的 OpenCV 例程200篇】27. 图像的旋转(以任意点为中心) 图像以任意点 (x0, y0) 为旋转中心、顺时针旋转角度 θ 的旋转操作,可以先将原点平移到旋转中心 (x0, y0) ,然后按照原…

OC里面的类

OC里面的类 类的定义 不指定方法的返回值 -(id)initWithObject:(id)obj; - initWithObject:obj; 省略返回值时,默认的类型是id,也就是上面两条等价,在c语言中默认是int 接口 类公开给外部的,关于使用这个类的消息叫接口。 类的定…

人员信息管理

使用Jsp Servlet Tomcat 实现对sqlServer数据库中人员信息的管理:(MVC架构) 准备相应的数据库 链接数据库 实现对数据库中人员信息的增删改查 页面总体效果如下所示: 点击删除之后会删除掉选中的这一行只显示剩下几行内容&a…

【OpenCV 例程200篇】28. 图像的旋转(直角旋转)cv2.rotate

『youcans 的 OpenCV 例程200篇 - 总目录』 【youcans 的 OpenCV 例程200篇】28. 图像的旋转(直角旋转) 旋转角度为 90,180,270 度时,可以用 cv2.rotate(src, rotateCode) 函数实现,该方法实际上是通过矩阵…

爱心表白

程序员并不是没有一点乐趣整天枯燥无味的游走在代码中的,在这里给大家提供了一个表白代码 功能描述: 1:能够计算任意两个时间的之间相隔的天数,2:在相隔天数下面输出心形并且心形里面还有英文我爱你字样。相信你已经迫…

OC与C混合编程

OC与C混合编程 oc中使用c语言函数 类的实现文件中可以定义c语言风格的函数,但仅限于implementation的前面,implementation和end之间,end之后 如果函数的作用域仅限于这个文件,那么给函数加上static修饰符比较好。 函数不能之间调用…

2021爱智先行者—(1)开箱点评

【本文正在参与"2021爱智先行者-征文大赛"活动】,活动链接:https://bbs.csdn.net/topics/602601454 2021爱智先行者—(1)开箱点评 欢迎关注 『Python小白的项目实战』 系列,持续更新 2021爱智先行者—&…

随机抽取

随机抽取程序是对数字字母的随机抽取,可用作抽奖程序中中奖号码的选择也可用于老师在课堂上随机点名随机抽人回答问题。 请大家先欣赏效果: 程序解读: 定义数组存储需要抽取的数据设置相应按键,继续或者结束的按钮输出提示文字…

OC里面的类类型

OC里面的类类型 类类型 比如说Volume *v1,*v2 v1和v2都是Volume类型,实际上就是一个指针,如果把v1赋值给v2后,那么v2和v1有相同的属性 空指针nil 返回值为id的类型的方法中,如果出错的话,一般会返回nil 调用端会采用如…

【youcans 的图像处理学习课】5. 图像的几何变换

专栏地址:『youcans 的图像处理学习课』 文章目录:『youcans 的图像处理学习课 - 总目录』 【youcans 的图像处理学习课】5. 图像的几何变换 文章目录【youcans 的图像处理学习课】5. 图像的几何变换1. 几何变换简介1.1 仿射变换基本例程:1.3…

键盘中按键对应的键码值

最近很多人想知道键盘中的按键对应的按键值 下面给大家分享一些键码值 键盘各种按键对应的ASII码如下: keycode 8 BackSpace BackSpace keycode 9 Tab Tab keycode 12 Clear keycode 13 Enter keycode 16 Shift_L keycode 17 Control_L keycode 18 Alt_L k…

python科学计算

1 软件包的安装和介绍 1.1 安装软件包 1.1.1 安装 和Matlab不同,Python的科学软件包由众多的社区维护和发布,因此要一一将其收集齐安装到你的电脑里是一件很费时间的事情。幸好这些工作已经有人帮我们整理好了。只需要下载一个文件,一次安…

【OpenCV 例程200篇】29. 图像的翻转(cv2.flip)

『youcans 的 OpenCV 例程200篇 - 总目录』 【youcans 的 OpenCV 例程200篇】29. 图像的翻转(cv2.flip) 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 翻转也称镜像,是指将图像沿轴线进行轴对称变换。水平镜像是将图像…

【OpenCV 例程200篇】30. 图像的缩放(cv2.resize)

『youcans 的 OpenCV 例程200篇 - 总目录』 【youcans 的 OpenCV 例程200篇】30. 图像的缩放(cv2.resize) 缩放只是调整图像的大小。 OpenCV 提供了 cv2.resize 函数,实现图像的缩放和大小变换 。 函数说明: cv2.resize(src, d…