【Emgu CV教程】5.4、几何变换之图像翻转
今天讲解的两个函数,可以实现以下样式的翻转。
- 水平翻转:将图像沿Y轴(图像最左侧垂直边缘)翻转的操作。原始图像中位于左侧的内容将移动到目标图像的右侧,原始图像中位于右侧的内容将移动到目标图像的左侧。
- 垂直翻转:将图像沿X轴(图像最下面水平边缘)翻转的操作。原始图像中位于下面的内容将移动到目标图像的上面,原始图像中位于上面的内容将移动到目标图像的下面。
- 转置:逆时针旋转90度,再垂直翻转。
- 顺时针旋转90度。
下面逐个举例,还是以 哈士奇.jpg为例,原始图像宽557,高399,如下:

1、Transpose()转置函数
Transpose()函数是转置函数,可以将图片逆时针旋转90度,再垂直翻转一次。用法非常简单:
Mat tempMat = srcMat.Clone();
Mat dstMat = new Mat();
CvInvoke.Transpose(tempMat, dstMat); // 就是逆时针旋转90度
CvInvoke.Imshow("Result Mat, " + dstMat.Size.ToString(), dstMat);
执行一次Transpose()函数,输出图像如下:

2、Flip()翻转函数
函数的定义如下:
public static void Flip( IInputArray src, // 输入图像 IOutputArray dst, // 输出图像 FlipType flipType // 旋转类型
)
注意哈,FlipType反转类型有Vertical、Horizontal、Both三种,也就是可以让图像垂直翻转、水平翻转、垂直+水平同时翻转。
以水平翻转为例,代码如下:
Mat dstMat = srcMat.Clone();
CvInvoke.Flip(dstMat, dstMat, FlipType.Horizontal);
CvInvoke.Imshow("Result Mat,FlipType.Horizontal, " + dstMat.Size.ToString(), dstMat);
翻转后的效果如下图:

垂直翻转和水平+垂直同时翻转的效果,分别是:

3、顺时针旋转90度
刚才讲的Transpose()函数,执行一次的效果是逆时针旋转90度再垂直翻转,那怎么能实现只顺时针旋转90度呢,Emgu CV里面没有直接顺时针旋转90度的函数,但是Transpose()和Flip()函数配合就OK啦。解释起来太空洞,我在PPT里画了一个演示。
- 第一种方式就是用PPT的顺时针旋转功能,一步到胃,顺时针旋转90度。
- 第二种方式就是先用Flip()函数垂直翻转,再用Transpose()转置。

代码就是这样,读者们自己试试吧。
Mat tempMat = srcMat.Clone();
Mat dstMat = new Mat();
CvInvoke.Flip(tempMat, dstMat, FlipType.Vertical);
CvInvoke.Transpose(dstMat, dstMat); // 再转置一下
CvInvoke.Imshow("Result Mat, " + dstMat.Size.ToString(), dstMat);
原创不易,请勿抄袭。共同进步,相互学习。
相关文章:
【Emgu CV教程】5.4、几何变换之图像翻转
今天讲解的两个函数,可以实现以下样式的翻转。 水平翻转:将图像沿Y轴(图像最左侧垂直边缘)翻转的操作。原始图像中位于左侧的内容将移动到目标图像的右侧,原始图像中位于右侧的内容将移动到目标图像的左侧。垂直翻转:将图像沿X轴…...
2024年AMC8历年真题练一练和答案详解(10),以及全真模拟题
六分成长继续为您分享AMC8历年真题,最后两天通过高质量的真题来体会快速思考、做对题目的策略。 题目从575道在线题库(来自于往年真题)中抽取5道题,每道题目均会标记出自年份和当年度的序号,并附上详细解析。【使用六…...
echarts业务中常用属性设置记录
1.legend计算占比 //在data中定义两个字段 total:0, znum:0 //计算上面两个值 this.data.forEach(val > this.total parseInt(val.value)); for (let i 0; i < nv.length; i) {if (i ! nv.length - 1) {this.znum this.znum Number(parseFloat((nv[i].value / this.t…...
Ubuntu 22.04 安装prometheus
服务器监控和报警软件有很多,为什么我们会选择Prometheus而不是其他软件呢? 因为它有以下优点: 自带简易web监控页面,用户可以很方便地查看监控数据和使用仪表盘。能实时收集数据并根据自定义警报规则推送告警;具有丰…...
Django的模板语言
文章目录 模板语法变量标签过滤器注释 组件引擎模板上下文加载器上下文处理器 模板引擎的支持配置用法引擎内置后端 模板 作为一个网络框架,Django 需要一种方便的方式来动态生成 HTML。最常见的方法是依靠模板。一个模板包含了所需 HTML 输出的静态部分࿰…...
为什么安卓逆向手机要root
安卓逆向工程是指对安卓应用程序进行研究和分析,以了解其内部工作原理、提取资源、修改应用行为、发现漏洞等。在某些情况下,为了进行逆向分析,需要对手机进行Root。 以下是一些安卓逆向中可能需要Root的原因: 获得完全访问权限…...
整合junit与热部署
整合junit <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><version>2.7.0</version></dependency> 测试类上添加SpringBootTest 如: 注意测试类的…...
C++面试宝典第21题:字符串解码
题目 给定一个经过编码的字符串,返回其解码后的字符串。具体的编码规则为:k[encoded_string],表示方括号内部的encoded_string正好重复k次。注意:k保证为正整数;encoded_string只包含大小写字母,不包含空格和数字;方括号确定是匹配的,且可以嵌套。 示例: 编码字符串为…...
WXUI 基于uni-app x开发的高性能混合UI库
uni-app x 是什么? uni-app x,是下一代 uni-app,是一个跨平台应用开发引擎。 uni-app x 没有使用js和webview,它基于 uts 语言。在App端,uts在iOS编译为swift、在Android编译为kotlin,完全达到了原生应用…...
P9840 [ICPC2021 Nanjing R] Oops, It‘s Yesterday Twice More题解
[ICPC2021 Nanjing R] Oops, It’s Yesterday Twice More 传送门 题面翻译 有一张 n n n\times n nn 的网格图,每个格子上都有一只袋鼠。对于一只在 ( i , j ) (i,j) (i,j) 的袋鼠,有下面四个按钮: 按钮 U:如果 i > 1 …...
OceanBase与MySQL兼容性对比
OB针对于高并发和大数据更有优势,公司的dba让我们把数据从mysql迁移到OceanBase了,这里记录一下OceanBase的MySQL模式。 OceanBase的MySQL模式兼容MySQL5.7的绝大部分功能和语法,兼容MySQL5.7版本的全量以及8.0版本的部分JSON函数。 暂不支持的功能: O…...
【linux】visudo
碎碎念 visudo命令是用来修改一个叫做 /etc/sudoers 的文件的,用来设置哪些 用户 和 组 可以使用sudo命令。并且使用visudo而不是使用 vi /etc/sudoers 的原因在于:visudo自带了检查功能,可以判断是否存在语法问题,所以更加安全 …...
Nvidia-docker的基础使用方法
安装: 安装nvidia-docker: distribution$(. /etc/os-release;echo $ID$VERSION_ID)curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.l…...
uniapp一键换色
需求 : 在我们现有项目基础上, 把原来的颜色替换成另一个颜色, 同时需要为下一个项目预留出来随时更换主题色, 实现一键换色 实现 : 1. 介绍 兼容不同项目对主题色及图标的需求 主要通过以下对css颜色和icon主题色图标两个模块的切换 scss/less的css变量config/index.js中的…...
动态规划思想案例刨析
动态规划的思想 动态规划解决问题的核心思想是“重叠子问题”和“最优子结构”。 重叠子问题:在复杂问题中,往往存在许多重复的子问题。动态规划通过避免重复计算,将子问题的解保存起来,以便在需要时直接引用,从而提…...
vtk9.3 配置 visual studio 2019 运行环境 和运行实例详解
(1)包含文件配置: 项目--属性--VC目录,在包含目录中把include文件夹的地址加进去,一直要到下一级 vtk-9.3目录下, 小知识: 在Visual Studio 2019中运行项目时,如果项目中使用了第三…...
腾讯云添加SSL证书
一、进入腾讯云SSL证书: ssl证书控制台地址 选择“我的证书”,点击"申请免费证书" 2、填写域名和邮箱,点击“提交申请” 在此页面中会出现主机记录和记录值。 2、进入云解析 DNS:云解析DNS地址 进入我的解析-记录…...
CentOS下用rpm安装软件时报错error: Failed dependencies
在CentOS下用rpm安装软件时会报如下错误: 1、安装时提示: [rootdb software]# rpm -ivh ksh-20120801-254.el8.x86_64.rpm warning: ksh-20120801-254.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEY error: Failed depende…...
Vue3+Vite连接高德地图JS API——地图显示、输入搜索
1 开通高德地图Web端JS API服务 1、进入高德地图API官网(https://lbs.amap.com/): 2、注册登录。 3、进入控制台。 4、点击“应用管理”,点击“我的应用”,创建新应用。 5、添加Key,服务平台选择“Web端&…...
一台java服务器可以跑多少个线程?
一台java服务器可以跑多少个线程? 一台java服务器能跑多少个线程?这个问题来自一次线上报警如下图,超过了我们的配置阈值。 打出jstack文件,通过IBM Thread and Monitor Dump Analyzer for Java工具查看如下: 共计166…...
华硕笔记本性能控制革命:G-Helper轻量级优化工具深度评测与实战指南
华硕笔记本性能控制革命:G-Helper轻量级优化工具深度评测与实战指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook…...
甲言Jiayan:终极古汉语NLP解决方案,让文言文处理变得简单高效
甲言Jiayan:终极古汉语NLP解决方案,让文言文处理变得简单高效 【免费下载链接】Jiayan 甲言,专注于古代汉语(古汉语/古文/文言文/文言)处理的NLP工具包,支持文言词库构建、分词、词性标注、断句和标点。Jiayan, the 1st NLP toolk…...
3分钟告别网页图片格式烦恼:一键转换PNG/JPG/WebP的完整指南
3分钟告别网页图片格式烦恼:一键转换PNG/JPG/WebP的完整指南 【免费下载链接】Save-Image-as-Type Save Image as Type is an chrome extension which add Save as PNG / JPG / WebP to the context menu of image. 项目地址: https://gitcode.com/gh_mirrors/sa/…...
AI 编程工具选型对比(2026)
面向研发团队的 AI 编程工具全景对比,覆盖功能、定价、适用场景,辅助选型决策。 工具全景 工具 厂商 核心能力 定位 Kiro AWS Agent 级(多步任务/自动化/代码生成+审查) 全栈 AI 开发助手 GitHub Copilot Microsoft/GitHub 代码补全 + Chat + Agent(预览) IDE 内补全为主…...
JS逆向实战:加密库动态Hook的工程化落地方法
1. 这不是写个console.log就能搞定的事:为什么主流加密库的Hook总在关键时刻失效“JS逆向实战:一键Hook主流加密库的调试与拦截”——看到这个标题,很多刚入行的朋友第一反应是:“不就是给CryptoJS、SM2、RSA.js这些库的encrypt方…...
向量化映射框架优化图着色问题的FPGA实现
1. 问题背景与核心挑战图着色问题作为组合优化领域的经典NP难问题,在集成电路布局分解、寄存器分配、逻辑最小化等场景中具有广泛应用。传统Ising机采用独热编码(one-hot encoding)方案,将每个节点的q种颜色状态映射为q个物理比特…...
Keil C51中使用DEFINE指令动态包含头文件技巧
1. 使用DEFINE指令指定#include文件的背景与需求在嵌入式C语言开发中,我们经常遇到需要根据不同的硬件平台或编译环境包含不同头文件的情况。传统做法是直接硬编码#include语句中的文件名,但这种方式缺乏灵活性,特别是在跨平台开发或需要频繁…...
成都制造企业供应链价格波动频繁,AI智能体该先预警哪些信号?
一、价格波动不是采购一个部门能扛住的问题很多制造企业谈供应链价格波动,第一反应是让采购去谈价、催报价、找替代供应商。但在真实经营里,价格风险很少只停留在采购单价上。铜、铝、钢材、塑料、电子元器件、包装材料、运费、汇率和供应商产能变化&…...
初创团队如何利用 Taotoken Token Plan 有效控制 AI 实验成本
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 初创团队如何利用 Taotoken Token Plan 有效控制 AI 实验成本 对于资源有限的初创团队而言,在产品原型和概念验证阶段&…...
工作中常用的注解梳理
注解是贴在类、方法、变量上的标记标签,以开头,本身不执行业务代码。作用主要有以下几点:代码标识说明替代配置文件自动生成代码框架识别驱动数据约束与校验单元测试序列化转换日常工作中常用的注解主要有以下十三类:JDK原生注解J…...
