当前位置: 首页 > news >正文

python学opencv|读取图像(二十九)使用cv2.getRotationMatrix2D()函数旋转缩放图像

【1】引言

前序已经学习了如何平移图像,相关文章链接为:

python学opencv|读取图像(二十七)使用cv2.warpAffine()函数平移图像-CSDN博客

在此基础上,我们尝试旋转图像的同时缩放图像。

【2】核心代码

前序学习进程中,已经知晓平移图像的核心代码是设置M矩阵,使其按照两行三列的形式,通过改变第三列的值来移动图像:

此时的M矩阵有两个可选变量x和y:

M=[[1,0,x],

      [0,1,y]],

当x>0,图像向右移动x大小的位置;当y>0,图像向右下移动y大小的位置;当x和y取负值时图像分别向左和向上运动。

当我们想旋转图像使,需要调用一个cv2.getRotationMatrix2D()函数来实现旋转。

这个函数的名字也很简单,拆开来就是cv.get Rotation Matrix2D(),直译就是对二维矩阵进行旋转的意思。

点击下方链接,直达cv2.getRotationMatrix2D()函数的官网学习教程:

OpenCV: Geometric Image Transformations

在这里,会看到:

图1

函数有三个参数:

Mat cv::getRotationMatrix2D     (     Point2f     center, #旋转中心,需要提前定义好
        double     angle, #旋转角度
        double     scale ) #缩放倍数

【3】代码测试

在这里,需要提前定义旋转中心:

import cv2 as cv # 引入CV模块
import numpy as np #引入numpy模块# 读取图片
src = cv.imread('src.png')
rows=len(src) #读取图像行数
cols=len(src[0]) #读取图像列数
center=(rows/2,cols/2) #旋转中心

然后就是调用cv2.getRotationMatrix2D()函数设置旋转和缩放属性:旋转60度,缩小为原来的0.8倍。

M=cv.getRotationMatrix2D(center,60,0.8) #旋转并缩放图像

然后依然要使用cv.warpAffine()函数来生成输出图像:

dst=cv.warpAffine(src,M,(cols,rows)) #输出图像

最后屏幕输出和保存:

cv.imshow('src-pingyi', dst)  # 在屏幕展示绘制圆形的效果
cv.imwrite('src-pingyi0.png', dst)  # 保存图像
cv.waitKey()  # 图像不会自动关闭
cv.destroyAllWindows()  # 释放所有窗口

此处使用的原图依然是: src.png

图1 src.png

代码运行后的输出为:

图2 旋转60度,缩小为原来的0.8倍

【4】细节说明

约定旋转中心的时候,如果是以原图的中心为依据,应该以(rows/2,cols/2)为旋转中心。

【5】结论

掌握了python+opencv实现图像旋转+缩放的操作技巧。

相关文章:

python学opencv|读取图像(二十九)使用cv2.getRotationMatrix2D()函数旋转缩放图像

【1】引言 前序已经学习了如何平移图像,相关文章链接为: python学opencv|读取图像(二十七)使用cv2.warpAffine()函数平移图像-CSDN博客 在此基础上,我们尝试旋转图像的同时缩放图像。 【2】…...

2025-微服务—SpringCloud-1~3

2025-微服务—SpringCloud 第一章、从Boot和Cloud版本选型开始说起1、Springboot版本2、Springcloud版本3、Springcloud Alibaba4、本次讲解定稿版 第二章 关于Cloud各种组件的停更/升级/替换1、微服务介绍2、SpringCloud是什么?能干吗?产生背景&#xf…...

UnityXR Interaction Toolkit 如何检测HandGestures

前言 随着VR设备的不断发展,从最初的手柄操作,逐渐演变出了手部交互,即头显可以直接识别玩家的手部动作,来完成手柄的交互功能。我们今天就来介绍下如何使用Unity的XR Interaction Toolkit 来检测手势Hand Gesture。 环境配置 1.使用Unity 2021或者更高版本,创建一个项…...

使用 Multer 上传图片到阿里云 OSS

文件上传到哪里更好? 上传到服务器本地 上传到服务器本地,这种方法在现今商业项目中,几乎已经见不到了。因为服务器带宽,磁盘 IO 都是非常有限的。将文件上传和读取放在自己服务器上,并不是明智的选择。 上传到云储存…...

2008-2020年各省社会消费品零售总额数据

2008-2020年各省社会消费品零售总额数据 1、时间:2008-2020年 2、来源:国家统计局、统计年鉴 3、指标:行政区划代码、地区、年份、社会消费品零售总额 4、范围:31省 5、指标解释:社会消费品零售总额指企业&#x…...

【大模型入门指南 07】量化技术浅析

【大模型入门指南】系列文章: 【大模型入门指南 01】深度学习入门【大模型入门指南 02】LLM大模型基础知识【大模型入门指南 03】提示词工程【大模型入门指南 04】Transformer结构【大模型入门指南 05】LLM技术选型【大模型入门指南 06】LLM数据预处理【大模型入门…...

java 查询树结构数据,无限层级树结构通用方法

1、数据库表数据 2、controller层TestTree简单测试 RestController RequestMapping("/test") public class testTreeController {Autowiredprivate TestTreeService testTreeService;GetMapping("/list")public List<TestTree> List(TestTree tree)…...

FreeCAD集成gmsh源码分析

目录 gmsh模块界面获取gmsh的版本执行gmsh网格划分gmsh模块界面 这个界面是用PySide来写的,PySide是QT的python绑定,具体代码在task_mesh_gmsh.py文件中。目前这个界面非常的简陋,没有对接gmsh稍微高级一点的功能。界面对应的事件处理是在gmshtools.py中。这里只分析“Gmsh …...

K8s 集群 IP 地址管理指南(K8s Cluster IP Address Management Guide)

K8s 集群 IP 地址管理指南 概述 你是否在小型初创公司或大型企业工作&#xff0c;并正在为公司评估 Kubernetes&#xff1f;你可能正在考虑运行十几个或更多的 Kubernetes (K8s) 集群。你期望每个集群支持几百个 K8s 节点&#xff0c;每个节点可能有 50 到 100 个 K8s Pod。这…...

Debye-Einstein-模型拟合比热容Python脚本

固体比热模型中的德拜模型和爱因斯坦模型是固体物理学中用于估算固体热容的两种重要原子振动模型。 爱因斯坦模型基于三种假设&#xff1a;1.晶格中的每一个原子都是三维量子谐振子&#xff1b;2.原子不互相作用&#xff1b;3.所有的原子都以相同的频率振动&#xff08;与德拜…...

OpenCV的图像分割

1、基本概念 图像分割是计算机视觉和图像处理中的一个关键步骤&#xff0c;它指的是将图像划分为多个区域或对象的过程。这些区域或对象在某种特性&#xff08;如颜色、形状、纹理或亮度等&#xff09;上是一致的或相似的&#xff0c;而在不同区域之间则存在明显的差异。图像分…...

【源码+文档+调试讲解】农产品研究报告管理系统

摘 要 农产品研究报告管理系统是一个旨在收集、整理、存储和分析农产品相关研究数据的综合性平台。农产品研究报告管理系统通常包含一个强大的数据库&#xff0c;它能够处理大量的研究数据&#xff0c;并对这些数据进行有效的管理和备份。农产品研究报告管理系统是现代农业科学…...

【STM32-学习笔记-7-】USART串口通信

文章目录 USART串口通信Ⅰ、硬件电路Ⅱ、常见的电平标准Ⅲ、串口参数及时序Ⅳ、STM32的USART简介数据帧起始位侦测数据采样波特率发生器 Ⅴ、USART函数介绍Ⅵ、USART_InitTypeDef结构体参数1、USART_BaudRate2、USART_WordLength3、USART_StopBits4、USART_Parity5、USART_Mode…...

高可用虚拟IP-keepalived

个人觉得华为云这个文档十分详细&#xff1a;使用虚拟IP和Keepalived搭建高可用Web集群_弹性云服务器 ECS_华为云 应用场景&#xff1a;虚拟IP技术。虚拟IP&#xff0c;就是一个未分配给真实主机的IP&#xff0c;也就是说对外提供数据库服务器的主机除了有一个真实IP外还有一个…...

AI多模态技术介绍:视觉语言模型(VLMs)指南

本文作者&#xff1a;AIGCmagic社区 刘一手 AI多模态全栈学习路线 在本文中&#xff0c;我们将探讨用于开发视觉语言模型&#xff08;Vision Language Models&#xff0c;以下简称VLMs&#xff09;的架构、评估策略和主流数据集&#xff0c;以及该领域的关键挑战和未来趋势。通…...

高效工作流:用Mermaid绘制你的专属流程图;如何在Vue3中导入mermaid绘制流程图

目录 高效工作流&#xff1a;用Mermaid绘制你的专属流程图 一、流程图的使用场景 1.1、流程图flowChart 1.2、使用场景 二、如何使用mermaid画出优雅的流程图 2.1、流程图添加图名 2.2、定义图类型与方向 2.3、节点形状定义 2.3.1、规定语法 2.3.2、不同节点案例 2.…...

uniApp通过xgplayer(西瓜播放器)接入视频实时监控

&#x1f680; 个人简介&#xff1a;某大型国企资深软件开发工程师&#xff0c;信息系统项目管理师、CSDN优质创作者、阿里云专家博主&#xff0c;华为云云享专家&#xff0c;分享前端后端相关技术与工作常见问题~ &#x1f49f; 作 者&#xff1a;码喽的自我修养&#x1f9…...

ws 配置 IngressRoute 和 http一样

ws 配置 IngressRoute 和 http一样 apiVersion: traefik.containo.us/v1alpha1 kind: IngressRoute apiVersion: traefik.containo.us/v1alpha1 kind: IngressRoute metadata:name: web-ws-ingressroutenamespace: starp spec:entryPoints:- webroutes:- match: Host(webws.we…...

IMX6ULL的IOMUXC寄存器和SNVS复用寄存器似乎都是对引脚指定复用功能的,那二者有何区别?

IMX6ULL 的 IOMUXC 和 SNVS&#xff08;Secure Non-Volatile Storage&#xff09;复用寄存器都是用于配置引脚功能的&#xff0c;但它们的作用范围、目的和使用场景存在明显区别。以下是它们的差异分析&#xff1a; 1. IOMUXC&#xff08;I/O Multiplexer Control&#xff09;寄…...

LabVIEW实现动态水球图的方法

水球图是一种直观展示百分比数据的图表&#xff0c;常用于数据监测与展示。LabVIEW 虽不直接支持水球图绘制&#xff0c;但可通过图片控件动态绘制波形&#xff0c;或借助 HTMLCSS 的 Web 控件实现。此外&#xff0c;还可以结合 Python 等第三方工具生成水球图&#xff0c;LabV…...

DSI3协议四大模式(CRM/PDCM/BDM/DM)全解析:从汽车胎压监测到电池管理,看它如何工作

DSI3协议四大模式深度解析&#xff1a;从胎压监测到电池管理的实战应用 汽车电子系统正经历着从分布式架构向集中式控制的转型&#xff0c;而DSI3&#xff08;Distributed System Interface 3&#xff09;协议凭借其独特的单线通信设计&#xff0c;正在成为连接各类车载传感器的…...

连登IEEE/Elsevier一区TOP刊!PINN+强化学习新突破!

**研究方法&#xff1a;**论文提出基于PINNs与强化学习融合的自适应优化控制方法&#xff0c;通过PINNs整合物理定律与在线数据建模系统动力学&#xff0c;借助自动微分特性辅助自适应动态规划迭代逼近连续时间哈密顿-雅可比-贝尔曼方程解&#xff0c;结合Actor-Critic框架优化…...

全贴合工艺中Cover Lens Mura不良的关键影响因素与优化策略

1. 全贴合工艺中的Mura现象解析 第一次看到全贴合屏幕上出现发黄或发白的斑块时&#xff0c;我还以为是产品运输途中受了撞击。后来在产线蹲守三个月才发现&#xff0c;这些被称为"Mura"的光学缺陷&#xff0c;其实是贴合工艺中的隐形杀手。Mura这个词源自日语"…...

网站主机技术概述

网站主机技术概述 随着互联网技术的飞速发展,网站已经成为企业和个人展示形象、提供服务的必要平台。网站主机的选择对于网站的稳定性和访问速度至关重要。本文将详细阐述网站主机技术,包括其基本概念、类型、选择标准以及未来发展趋势。 一、网站主机基本概念 网站主机,…...

计算机毕业设计:Python地铁多维度运营分析与数据管理系统 Django框架 数据分析 可视化 大数据 机器学习 深度学习(建议收藏)✅

博主介绍&#xff1a;✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久&#xff0c;选择我们就是选择放心、选择安心毕业✌ > &#x1f345;想要获取完整文章或者源码&#xff0c;或者代做&#xff0c;拉到文章底部即可与…...

SMU Debug Tool完全指南:AMD Ryzen硬件调试的终极解决方案

SMU Debug Tool完全指南&#xff1a;AMD Ryzen硬件调试的终极解决方案 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https:…...

当PLC网口IP丢了怎么办?用Wireshark抓LLDP包,免费找回施耐德M580的地址

工业现场急救指南&#xff1a;用Wireshark找回施耐德M580 PLC的失踪IP地址 那天下午三点&#xff0c;工厂生产线突然停机&#xff0c;监控系统显示PLC通讯中断。当我冲到控制柜前&#xff0c;发现前任工程师留下的文档里&#xff0c;M580的IP地址记录栏赫然写着"见设备标签…...

游戏盾不生效、攻击防不住?策略校验与节点切换教程

做游戏运维和安全的兄弟&#xff0c;基本都碰到过这种糟心事&#xff1a;明明接了游戏盾&#xff0c;服务器还是被打瘫、攻击流量拦不住、正常玩家频繁掉线。很多人第一反应是 “产品垃圾”&#xff0c;但实际 80% 的情况是策略配置错、节点没选对、SDK 接入有问题。这篇就从实…...

保姆级教程:用ms-swift微调Qwen3-Embedding-0.6B,搞定文本相似度任务

从零构建文本语义搜索系统&#xff1a;基于Qwen3-Embedding的实战指南 当我们需要在海量文本中快速找到相关内容时&#xff0c;传统的关键词匹配已经力不从心。想象一下电商平台的智能推荐、客服系统的FAQ自动匹配&#xff0c;或是法律文档的相似案例检索——这些场景都需要理解…...

告别B站资源无法保存的烦恼:BiliTools跨平台工具箱完整使用指南

告别B站资源无法保存的烦恼&#xff1a;BiliTools跨平台工具箱完整使用指南 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliToo…...