OpenCV几何图像变换(6)计算反转仿射变换函数invertAffineTransform()的使用

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

反转一个仿射变换。
该函数计算由 2×3 矩阵 M 表示的逆仿射变换:
[ a 11 a 12 b 1 a 21 a 22 b 2 ] \begin{bmatrix} a_{11} & a_{12} & b_1 \\ a_{21} & a_{22} & b_2 \end{bmatrix} [a11a21a12a22b1b2]
结果也是一个 2×3 矩阵,与 M 同类型。
invertAffineTransform() 函数用于计算给定仿射变换矩阵的逆矩阵。仿射变换矩阵通常是一个 2×3 的矩阵,用于描述图像的平移、旋转、缩放等变换。此函数计算的逆变换矩阵可以用来撤销原始变换的效果。

函数原型


void cv::invertAffineTransform	
(InputArray 	M,OutputArray 	iM 
)		

参数

  • 参数M 原始的仿射变换
  • 参数iM 输出逆仿射变换。

代码示例


#include <opencv2/core.hpp>
#include <opencv2/opencv.hpp>// 函数声明
cv::Mat invertAffineTransform( const cv::Mat& M );int main()
{// 创建一个仿射变换矩阵cv::Mat M = ( cv::Mat_< double >( 2, 3 ) << 1, 0.5, 0, 0, 1.5, 0 );// 调用函数计算逆矩阵cv::Mat iM;cv::invertAffineTransform( M,iM );std::cout << "Original Affine Transformation Matrix:\n" << M << "\n";std::cout << "Inverse Affine Transformation Matrix:\n" << iM << "\n";return 0;
}

运行结果

在这里插入图片描述

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

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

相关文章

windows vs2022 MFC使用webview2嵌入网页

Microsoft Edge WebView2 控件允许在本机应用中嵌入 web 技术(HTML、CSS 以及 JavaScript)。 WebView2 控件使用 Microsoft Edge 作为绘制引擎&#xff0c;以在本机应用中显示 web 内容。 一、通过菜单“项目”-“管理NuGet程序包”&#xff0c;下载相关包 二、安装 Microsof…

结构化与面向对象

人类认识世界总是循序渐进的过程&#xff0c;软件工程也一样&#xff0c;从最开始的单兵作战&#xff0c;再到软件作坊&#xff0c;直到如今的大规模软件开发&#xff0c;软件工程从业者不断总结实践中存在的问题以及解决途径&#xff0c;逐渐形成了一系列的软件工程方法&#…

ZooKeeper--基于Kubernetes部署ZooKeeper

ZooKeeper 服务 服务类型: 无头服务&#xff08;clusterIP: None&#xff09;&#xff0c;这是 StatefulSet&#xff08;有状态集&#xff09;必需的配置。 端口: 2181 (客户端): 用于客户端连接。 2888 (跟随者): 用于 ZooKeeper 服务器之间的连接。 3888 (领导者): 用于领导者…

Linux查看jvm相关参数以及设置调优参数

1、查看jvm相关参数 1.1、查看Java进程命令 jcmd会显示出来对应的Java进程id 1.2、查看堆内存各个区域的使用大小、具体大小和GC次数以及耗时 jstat -gc 4036145jstat -gc 进程id 各个参数的含义。 如上图,4036145的进程,FGCT是0.452,FGC是4.平均每次full gc耗时0.11秒。 …

Android13系统源码内置App并通过AIDL调用获取内置存储卡的真实大小

jix 进行从事Android系统源码开发不得不在原有的系统上内置自己的App。通过内置App一般都需要调用些系统才能访问的系统级App。App的部署和调试需要依赖源码系统。通过命令 &#xff1a; mm 来实现。 第三方App想调用内置的app需要通过跨进程调用。 这里通过AIDL来实现跨进程…

Qt第二十章 数据库操作

文章目录 Qt操作数据库QSqlDataBaseQSqlQuery执行SQL语句 QSqlRecordQSqlField数据库模型QSqlQueryModelQSqlTableModelQSqlRelationalTableModel 编译MySql驱动msvc版本MySql客户端程序部署 Qt操作数据库 需要在cmakelist加上Sql模块 QSqlDataBase 可以通过静态成员查看支持的…

苹果已删除照片的恢复方法有哪些?盘点几种实用办法

苹果设备上的照片往往是珍贵的回忆&#xff0c;但不小心删除照片的情况时有发生。幸运的是&#xff0c;苹果提供了几种方法来帮助用户恢复已删除的照片。本文将详细介绍几种有效的恢复方法&#xff0c;帮助您找回那些重要的照片。 方法一&#xff1a;通过“最近删除”文件夹恢复…

SQL-DCL-数据控制语言

一、 DCL-管理用户 二、DCL-权限控制 一、 DCL-管理用户,主要是DBA数据库管理员使用&#xff0c;开发使用较少 # 1、查询用户 use mysql; show tables; desc user; select * from user; # host为主机地址, 主机地址和用户名确定唯一性# 2、创建用户 create user itcastlocalh…

【AD9361 数字基带】多片基带内FPGA补偿 I/Q Rotation

I/Q 旋转 Rotation 在许多多通道射频系统中&#xff0c;如 AD-FMCOMMS5&#xff0c;甚至在 AD-FMCOMMS2、AD-FMCOMMS3 上&#xff0c;都需要测量或校正两个复数 &#xff08;I/Q&#xff09; RF 信号之间的相位差。 从纯粹的数学描述来看&#xff0c;单个正弦波没有相位&…

【数学建模】趣味数学模型——等额还款数学模型

问题 在银行贷款中&#xff0c;通常采用等额还款。假定银行贷款的年利率为 p&#xff0c;贷款 k 元&#xff0c;分 m 年采用每月等额还款方式还清。问每月还款多少钱&#xff1f;总共还的钱是多少&#xff1f;每月还款中还本金和利息各是多少元&#xff1f; 如果考虑每月等额…

VTK随笔一:初识VTK(QT中嵌入VTK窗口)

VTK&#xff08;Visualization Toolkit&#xff09;是一个用于可视化和图形处理的开源软件库。它提供了一系列的算法和工具&#xff0c;可以用来创建、渲染和处理二维和三维的图形数据。VTK可以在多个平台上运行&#xff0c;并支持各种编程语言&#xff0c;包括C、Python和Java…

基于Springboot + vue + mysql 车辆充电桩管理系统 设计实现

目录 &#x1f4da; 前言 &#x1f4d1;摘要 1.1 研究背景 &#x1f4d1;操作流程 &#x1f4da; 系统架构设计 &#x1f4da; 数据库设计 &#x1f4ac; E-R表 3.4.2 数据库具体设计 系统功能模块 系统首页 用户注册 充电桩 个人中心 用户后台管理模块 用户登录…

完成课题ssrf实现.SSH未创建写shell,同时完成其他漏洞复现

SSRF 一种网络安全漏洞&#xff0c;发生在服务器端应用程序中&#xff0c;允许攻击者通过服务器向任意网络资源发送请求&#xff0c;而无需用户直接参与。这种漏洞通常源于程序设计错误&#xff0c;例如当应用程序使用用户的输入作为URL请求的一部分&#xff0c;而没有适当的验…

Ansible初识

ansible初识 Ansible是一种自动化工具&#xff0c;用于配置管理、应用程序部署和任务自动化。它基于Python语言开发&#xff0c;使用SSH协议进行通信&#xff0c;并且不需要在被管理的主机上安装任何客户端。Ansible使用简单的YAML语言来描述任务和配置&#xff0c;使得操作简…

Vue3的三种样式控制及实现原理

你好&#xff0c;我是沐爸&#xff0c;欢迎点赞、收藏和关注。个人知乎 Vue3中一共有三种样式控制&#xff0c;分别是全局样式控制、局部作用域样式控制和深度样式控制&#xff0c;今天我们一起看下这三种样式控制的使用&#xff0c;以及实现的原理是什么。 一、全局样式控制…

NRK3301语音识别芯片在汽车内饰氛围灯上的应用方案解析

随着智能汽车的快速发展&#xff0c;车载语音交互技术逐渐成为提升驾驶体验的关键技术之一。传统的汽车内饰氛围灯语音识别系统往往依赖于手动操作&#xff0c;不仅操作繁琐&#xff0c;而且在驾驶过程中容易分散驾驶员的注意力。因此&#xff0c;开发一种高效、便捷的汽车内饰…

SpringBoot集成Redis

目录 12.1 配置文件12.2 防火墙12.3 Jedis(一般不用了&#xff0c;了解即可)1.介绍2.步骤3.写YML4.主启动5.业务类 12.4 Lettuce1.介绍以及和Jedis的区别2.步骤1.改pom2.业务类 12.5 Redis Template(推荐)1.连接单机1.改pom2.写YML3.业务类3.1配置类3.2 service3.3 controller测…

Stable Diffusion的微调方法原理总结

在深度学习领域&#xff0c;Stable Diffusion作为一种强大的生成模型&#xff0c;正逐渐成为图像和视频生成领域的热门话题。它不仅能够模拟复杂的自然和人工系统中的随机演化行为&#xff0c;还通过一系列微调方法&#xff0c;显著提升了模型在特定任务上的性能。本文旨在深入…

开放式耳机别人能听到吗?开放式的防漏音效果到底好不好?

开放式耳机的设计是允许一部分声音泄露出来&#xff0c;所以当您使用开放式耳机听音乐或通话时&#xff0c;周围的人可能会有所察觉。具体别人能听到多少&#xff0c;取决于几个因素&#xff1a; 音量大小&#xff1a;如果音量设置得比较高&#xff0c;那么周围的人更容易听到…

多线程面试常问

一、创建线程的几种方式 1、继承Thread类并重写run()方法。 public class MyThread extends Thread {Overridepublic void run() {System.out.println("通过集成 Thread 类实现线程"); } } // 如何使用 new MyThread().start() 2、实现Runnable接口并重写run()方法…