5分钟更新你的图像处理小技巧(1)opencv旋转矩阵的不同之处

力求5分钟直接了当的说明一个实际问题

cv2.getRotationMatrix2D 简介

用于生成图像旋转的仿射变换矩阵
参数包括:center: 旋转的中心点,通常是图像的中心。angle: 旋转角度,以度为单位。正值表示逆时针旋转。scale: 缩放比例,表示在旋转时图像的缩放程度。
函数返回一个2x3的仿射变换矩阵,与cv2.warpaffine 连用较多

opencv中给出的仿射变换矩阵

[ α β ( 1 − α ) ⋅ center.x − β ⋅ center.y − β α β ⋅ center.x + ( 1 − α ) ⋅ center.y ] α = scale ⋅ cos ⁡ ( angle ) , β = scale ⋅ sin ⁡ ( angle ) \begin{bmatrix} \alpha & \beta & (1 - \alpha) \cdot \text{center.x} - \beta \cdot \text{center.y} \\ -\beta & \alpha & \beta \cdot \text{center.x} + (1 - \alpha) \cdot \text{center.y} \end{bmatrix}\\ \alpha = \text{scale} \cdot \cos(\text{angle}),\quad\beta = \text{scale} \cdot\sin(\text{angle}) [αββα(1α)center.xβcenter.yβcenter.x+(1α)center.y]α=scalecos(angle),β=scalesin(angle)

这与旋转矩阵有何不同?

在中学时,我们学到向量(x,y)以原点为中心旋转一个角度angle,则它的新坐标是:

( x ′ y ′ ) = ( cos ⁡ ( a n g l e ) − sin ⁡ ( a n g l e ) sin ⁡ ( a n g l e ) cos ⁡ ( a n g l e ) ) ( x y ) \begin{pmatrix} x' \\y'\end{pmatrix} =\begin{pmatrix} \cos(angle) & -\sin(angle) \\ \sin(angle) & \cos(angle) \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix} (xy)=(cos(angle)sin(angle)sin(angle)cos(angle))(xy)

可以看到旋转矩阵的正负号与仿射变换不同

真相就是!

opencv中仿射变换矩阵按照 图像坐标系,即左上角为原点(0,0)
而中学所熟悉的公式是按照 自然坐标系,即左下角为原点(0,0),也就是笛卡尔坐标系

图像处理中,初学者很容忽视这个问题,导致实操时卡bug

如果你还有时间,可以浏览 opencv官方文档

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

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

相关文章

【算法每日一练]-dfs bfs(保姆级教程 篇8 )#01迷宫 #血色先锋队 #求先序排列 #取数游戏 #数的划分

目录 今日知识点: 使用并查集映射点,构造迷宫的连通块 vis计时数组要同步当回合的处理 递归求先序排列 基于不相邻的取数问题:dfs回溯 n个相同球放入k个相同盒子:dfs的优化分支暴力 01迷宫 血色先锋队 求先序排列 取数游…

Javaweb之Mybatis的基础操作的详细解析

1. Mybatis基础操作 学习完mybatis入门后,我们继续学习mybatis基础操作。 1.1 需求 需求说明 通过分析以上的页面原型和需求,我们确定了功能列表: 查询 根据主键ID查询 条件查询 新增 更新 删除 根据主键ID删除 根据主键ID批量删除 …

七:Day06_redis高级01

第一章 Redis入门 1.1 节 什么是NoSql型数据库 NoSQL ,泛指非关系型的数据库, NoSQL Not Only SQL,它可以作为关系型数据库的良好补充。NoSQL 不依赖业务逻辑方式存储,而以简单的key-value模式存储。因此大大的增加了数据库的扩展能力。 SQLNoSQL数据结构结构化非…

【K8S 资源管理】声明式资源管理

目录 一、常用的发布方式 1、蓝绿发布: 2、金丝雀发布(灰度发布): 3、滚动更新(deployment的默认更新方式): 二、声明式管理方法(yaml文件) 1、三种发布命令&#x…

esp32idf使用thingscloud例程

对于不同的消息类型,API 如下: 消息类型 HTTP Method HTTP URL 设备上报属性 POST /device/v1//attributes 设备获取属性 GET /device/v1//attributes 设备上报事件 POST /device/v1//event/report 您只需要将以上的 HTTP URL 和接入点拼接即可获得最终…

数据结构第2章 栈和队列

名人说:莫听穿林打叶声,何妨吟啸且徐行。—— 苏轼《定风波莫听穿林打叶声》 本篇笔记整理:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 0、思维导图栈和队列1、栈1)特点2&#xff0…

技术资讯:Vue 3.4 新版本发布,1分钟快速看看改了啥!

大家好,我是大澈! 本文约1000字,整篇阅读大约需要1分钟。 感谢关注微信公众号:“程序员大澈”,免费领取"面试礼包"一份,然后免费加入问答群,从此让解决问题的你不再孤单&#xff01…

SpringMVC框架

SpringMVC 三层架构MVC模式SpringMVC入门案例总结 三层架构 表现层(web) 页面数据的收集,产出页面 业务逻辑层(service) 业务处理 数据访问层(Dao) 数据持久化 MVC模式 SpringMVC 基于Java…

单元测试框架-Unittest

1 Selenium自动化测试基础和环境部署 1.Web功能自动化测试——为什么要学习单元测试框架unittest?除此之外还有没有其他的单元测试框架? Python语言编写的WebDriver测试脚本通常使用单元测试框架来运行,所以,了解单元测试框架的基本方法和…

【日积月累】Java Lambda 表达式

目录 【日积月累】Java Lambda 表达式 1.前言2.语法3.应用场景3.1简化匿名内部类的编写3.1简化匿名内部类的编写3.2简化集合类中的操作3.3实现函数式接口3.4简化多个方法的调用3.5简化异步编程 4.总结5.参考 文章所属专区 日积月累 1.前言 Lambda表达式是一个匿名函数&#…

useState和setState区别

一、主要是讲一下类组件的状态和函数组件的状态 1.类组件中state只能有一个, 函数组件中state可以有多个 函数组件:可以使用对个状态,便于控制。 // 文章数量的初始值const [articleData, setArticleData] useState({list: [],// 文章列表…

【C程序设计】 C存储类

存储类定义 C 程序中变量/函数的存储位置、生命周期和作用域。 这些说明符放置在它们所修饰的类型之前。 下面列出 C 程序中可用的存储类: autoregisterstaticextern auto 存储类 auto 存储类是所有局部变量默认的存储类。 定义在函数中的变量默认为 auto 存储…

k8s 之7大CNI 网络插件

一、介绍 网络架构是Kubernetes中较为复杂、让很多用户头疼的方面之一。Kubernetes网络模型本身对某些特定的网络功能有一定要求,但在实现方面也具有一定的灵活性。因此,业界已有不少不同的网络方案,来满足特定的环境和要求。 CNI意为容器网络…

基于混合蛙跳算法优化的Elman神经网络数据预测 - 附代码

基于混合蛙跳算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于混合蛙跳算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于混合蛙跳优化的Elman网络5.测试结果6.参考文献7.Matlab代码 摘要&…

在pbootcms中制作静态化的TAG标签列表

如果你使用pbootcms来管理你的网站,你可能会遇到这样的需求:将TAG标签列表改成静态化的类似于栏目结构的需求。下面是实现这个需求的步骤。 步骤1 修改PHP文件 打开 apps/home/controller/ParserController.php 并找到大约在1852行左右的代码段&#x…

2024年测试岗最新自动化测试面试题整理,干货满满

一、接口测试 1、接口测试用例的编写要点有哪些?(问法二:接口测试用例设计需要考虑哪些方面?问法三:接口测试中有哪些要注意的测试点?) 1) 考虑输入参数和输出参数的合法性&#x…

SQL窗口函数大小详解

窗口大小 OVER 子句中的 frame_clause 选项用于指定一个滑动的窗口。窗口总是位于分区范围之内,是分区的一个子集。指定了窗口之后,分析函数不再基于分区进行计算,而是基于窗口内的数据进行计算。 指定窗口大小的语法如下: ROWS…

java进阶四-深入理解泛型和注解

泛型和注解是框架技术必备的技能 5 泛型5.1泛型理解5.1.1 泛型概念5.1.2 泛型的特点5.1.3 如何理解Java中的泛型是伪泛型?5.1.4 泛型的价值 5.2 泛型语法5.2.1 泛型类5.2.2 泛型接口3.2.3 泛型方法3.2.4泛型的上下边界3.2.5创建泛型数组 5.3泛型应用场景5.3.1数据库…

通用异构参数服务器技术

一、架构设计 通用异构参数服务器技术的架构设计主要考虑的是系统的可扩展性和灵活性。这种设计需要能够适应不同的计算环境和任务需求,包括CPU、GPU、FPGA等不同的计算资源。为了实现这一目标,参数服务器采用了层次化的架构设计,包括数据层…

Python实现 病理图像mrxs格式转SVS

直接给代码吧。 如果不需要svs格式,需要的是tif的话,可以直接用slideviewer或者caseviewer转成tif。 事先说明一下,这个代码是采用一次性读取整个WSI后,再转存为svs的方式。 所需要的内存需要满足一次性读取整个WSI的要求。 这个代…