【OpenCV 例程200篇】33. 图像的复合变换

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


【youcans 的 OpenCV 例程200篇】33. 图像的复合变换


图像的复合变换是指对给定的图像连续进行多次上述的平移、旋转、翻转、缩放、错切等基本变换,也称为级联变换。

对给定图像按一定顺序执行若干次基本变换,其变换矩阵仍然可以用 3x3 阶变换矩阵表示。进一步地,对图像依次执行基本变换 F1、F2、…Fn 的变换矩阵分别为 M1、M2、…Mn,可以证明,以图像中心点为中心进行比例、旋转进行变换,则复合变换的变换矩阵 M 等于各基本变换矩阵依次相乘所得到的组合矩阵:
M=M1×M2×⋯×MnM = M_1 \times M_2 \times \dots \times M_n M=M1×M2××Mn

缩放:
MAZ=[fx000fy0001]M_{AZ} = \begin{bmatrix} fx &0 &0\\ 0 &f_y &0\\ 0 &0 &1 \end{bmatrix} MAZ=fx000fy0001

旋转:
MAR=[cosθ−sinθ0sinθcosθ0001]M_{AR} = \begin{bmatrix} cos \theta &-sin \theta &0\\ sin \theta &cos \theta &0\\ 0 &0 &1 \end{bmatrix} MAR=cosθsinθ0sinθcosθ0001

平移:
MAT=[10dx01dy001]M_{AT} = \begin{bmatrix} 1 &0 &d_x\\ 0 &1 &d_y\\ 0 &0 &1 \end{bmatrix} MAT=100010dxdy1

扭变:
MAS=[1tanθ0010001]M_{AS} = \begin{bmatrix} 1 &tan \theta &0\\ 0 &1 &0\\ 0 &0 &1 \end{bmatrix} MAS=100tanθ10001

镜像:
MAF=[−10fw010001]M_{AF} = \begin{bmatrix} -1 &0 &f_w\\ 0 &1 &0\\ 0 &0 &1 \end{bmatrix} MAF=100010fw01


基本例程:1.42 图像的复合变换

    # 1.42 图像的复合变换img = cv2.imread("../images/imgLena.tif")  # 读取彩色图像(BGR)height, width = img.shape[:2]  # 图片的高度和宽度# (1) 缩放fx, fy = 0.6, 0.6MAZ = np.float32([[fx, 0, 0], [0, fy, 0]])  # 构造缩放变换矩阵imgT1 = cv2.warpAffine(img, MAZ, (width, height))  # 仿射变换, 黑色填充# (2) 平移dx, dy = 50, 200  # dx=100 向右偏移量, dy=50 向下偏移量MAT = np.float32([[1, 0, dx], [0, 1, dy]])  # 构造平移变换矩阵imgT2 = cv2.warpAffine(imgT1, MAT, (width, height), borderValue=(0,255,255))  # 实现仿射变换# (3) 旋转theta = -30 * np.pi / 180  # 逆时针旋转 30°cosTheta = np.cos(theta)sinTheta = np.sin(theta)MAR = np.float32([[cosTheta, -sinTheta, 0], [sinTheta, cosTheta, 0]])  # 构造旋转变换矩阵imgT3 = cv2.warpAffine(imgT2, MAR, (width, height), borderValue=(255,255,0))  # 实现仿射变换# (4) 扭曲theta = -30 * np.pi / 180  # 逆时针扭变 30°MAS = np.float32([[1, np.tan(theta), 0], [0, 1, 0]])  # 构造扭变变换矩阵imgT4 = cv2.warpAffine(imgT3, MAS, (width, height), borderValue=(255,0,255))  # 实现仿射变换plt.figure(figsize=(9,6))plt.subplot(221), plt.axis('off'), plt.title("T1:Zoom")plt.imshow(cv2.cvtColor(imgT1, cv2.COLOR_BGR2RGB)),plt.subplot(222), plt.axis('off'), plt.title("T2:Translation")plt.imshow(cv2.cvtColor(imgT2, cv2.COLOR_BGR2RGB))plt.subplot(223), plt.axis('off'), plt.title("T3:Rotation")plt.imshow(cv2.cvtColor(imgT3, cv2.COLOR_BGR2RGB))plt.subplot(224), plt.axis('off'), plt.title("T4:Shear")plt.imshow(cv2.cvtColor(imgT4, cv2.COLOR_BGR2RGB))plt.show()

在这里插入图片描述


(本节完)


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

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

31. 图像金字塔(cv2.pyrDown)
33. 图像的复合变换
34. 图像的投影变换

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

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

相关文章

表格生成器

能自动生成表格的小程序 当你在相应的输入框内输入表格的行高,列宽,多少行,多少列的数字后,点击创建表格就会自动生成你想要的表格。 未输入数据之前: 输入要生成表格数据之后点击创建表格:(为…

开心农场

仿照qq农场实现了一个简易的开心农场,使我们在开心快乐中学习 在农场里我们可以进行基本的操作播种,生长,开花和结果。 先看一下效果图 生长 结果 一番欣赏之后是不是感觉很有趣很好玩~~~~ **程序解读:**准备好相关的图片和…

基于ssm企业人事管理系统设计与实现论文

摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统企业人事信息管理难度大,容错率低&#xff0c…

【OpenCV 例程200篇】34. 图像的投影变换(cv2.getPerspectiveTransform)

『youcans 的 OpenCV 例程200篇 - 总目录』 【youcans 的 OpenCV 例程200篇】34. 图像的投影变换 投影变换(Projective mapping)也称透视变换(Perspective transformation)是建立两平面场之间的对应关系, 将图片投影到…

python里面的dict和set

python里面的dict和set dict Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 举个例子,假设要根据同学的名…

Ajax实现登陆

用Ajax前后端分离实现一个简单的用户登录页面 先看一下页面效果图 账号和密码格式错误 格式正确但是用户名或密码错误(清空密码框内容,选中账号框全部内容) 程序详解: : 对输入的账号和密码用正则表达式验证格式 &…

【OpenCV 例程200篇】35. 图像的投影变换(边界填充)

『youcans 的 OpenCV 例程200篇 - 总目录』 【youcans 的 OpenCV 例程200篇】35. 图像的投影变换(边界填充) 投影变换(Projective mapping)也称透视变换(Perspective transformation)是建立两平面场之间的对…

点击修改表格背景色

使用Jquery事件实现点击修改表格的背景颜色 每列表格之前都有一个多选按钮,当你点击按钮时,这一行所有内容的背景色会发生改变,当你再次点击该多选按钮的时候,取消背景色。 未点击之前的样式 点击时候的样式 程序解读&#xff…

【OpenCV 例程200篇】36. 直角坐标与极坐标转换(cv2.polarToCart)

『youcans 的 OpenCV 例程200篇 - 总目录』 【youcans 的 OpenCV 例程200篇】36. 直角坐标与极坐标的转换 函数 cv2.cartToPolar 用于将直角坐标(笛卡尔坐标)转换为极坐标,函数 cv2.polarToCart 用于将极坐标转换为直角坐标(笛卡尔…

【youcans 的图像处理学习课】6. 灰度变换与直方图处理

专栏地址:『youcans 的图像处理学习课』 文章目录:『youcans 的图像处理学习课 - 总目录』 【youcans 的图像处理学习课】6. 灰度变换与直方图处理 文章目录【youcans 的图像处理学习课】6. 灰度变换与直方图处理1. 图像增强技术2. 图像的灰度化处理和二…

数字时钟

一个美丽的数字时钟 利用所学的Jquery知识制作一个自己的专属时钟,下面先看一下效果图 效果图此图为静止 (时分秒都是动态变化的) 程序解读:使用定时器进行动态变化,时分秒的数字小于10的时候前面应该加上一个0&…

链接数据库增删改通用

实现对SQLServer和MySql数据库通用链接及数据的增删改 我们经常需要和数据库打交道,对数据库数据进行增改删查的操作,首先我们必须要先链接数据库,然后对数据内容进行相关增删改操作。 首先看一下目录结构 程序解读:一共有三个…

2021爱智先行者—(2)零基础APP开发实例

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

ATM取款机系统

模拟银行实现ATM机取款系统 该系统使用( ( (SQLServer) ) )数据库 功能介绍: 开户(到银行填写开户申请单)取钱存钱查询余额转账 根据需求设计相对应的数据库概念模型 流程分步详解 1 创建数据库Bank_db --创建数据库 CREATE DATABASE B…

【OpenCV 例程200篇】37. 图像的灰度化处理和二值化处理(cv2.threshold)

『youcans 的 OpenCV 例程200篇 - 总目录』 【OpenCV 例程200篇】37. 图像的灰度化处理和二值化处理 按照颜色对图像进行分类,可以分为二值图像、灰度图像和彩色图像。 二值图像:只有黑色和白色两种颜色的图像。每个像素点可以用 0/1 表示,0…

【OpenCV 例程200篇】38. 图像的反色变换(图像反转)

『youcans 的 OpenCV 例程200篇 - 总目录』 【OpenCV 例程200篇】38. 图像的反色变换(图像反转) 灰度变换是图像增强的重要方法,可以使图像动态范围扩大、图像对比度增强,图像更清晰,特征更明显,从而改善图…

【OpenCV 例程200篇】39. 图像灰度的线性变换

『youcans 的 OpenCV 例程200篇 - 总目录』 【OpenCV 例程200篇】39. 图像灰度的线性变换 线性灰度变换将原始图像灰度值的动态范围按线性关系扩展到指定范围或整个动态范围。 线性灰度变化对图像的每一个像素作线性拉伸,可以凸显图像的细节,提高图像的…

网络编程基础

网络协议 TCP/IP协议 IP地址与端口

获取焦点改变状态

表格显示文本内容,当用鼠标点击时获取到焦点文本变为可输入的输入框,点击空白处时失去焦点变为文本显示的文本内容 先看效果图 失去焦点的时候(文本内容只能看不能编辑) 获取焦点的时候(文本内容变为可以编辑的输入框…

【OpenCV 例程300篇】40. 图像分段线性灰度变换

『youcans 的 OpenCV 例程300篇 - 总目录』 【youcans 的 OpenCV 例程300篇】40. 图像分段线性灰度变换 分段线性变换函数可以增强图像各部分的反差,增强感兴趣的灰度区间、抑制不感兴趣的灰度级。 分段线性函数的优点是可以根据需要拉伸特征物的灰度细节&#xff…