OpenCV-Python图像几何变换
概念:几何变换是指将一幅图像映射到另外一幅图像内的操作。OpenCV提供了多个与映射有关的函数,这些函数使用起来方便灵活,能够高效地完成图像的映射。
缩放
cv2.resize()函数用于缩放图像
det = cv2.resize(src, dsize[,dst[,fx[,fy[,interpolation]]]])
dst表示转换后的图像
src表示原图像
dsize表示转换后图像大小
fx表示水平方向的缩放比例
fy表示垂直方向的缩放比例
interpolation表示插值方式
插值方式 说明 cv2.INTER_NEAREST 最近邻差值 cv2.INTER_LINEAR 双线性插值(默认插值方式) cv2.INTER_CUBIC 3次样条插值 cv2.INTER_AREA 区域插值 cv2.INTER_LANCZOS4 LANCZOS插值
需要注意的是,当dsize不为None时,不管是否设置了fx和fy的参数,都由dsize来确定目标图像的大小,格式为(width,height)。
import cv2
img = cv2.imread('test2.jpg')
# 等比缩放
width = 256
high = int(img.shape[0]*(width/img.shape[1]))
img1 = cv2.resize(img, (width, high), interpolation=cv2.INTER_LINEAR)
img2 = cv2.resize(img, (width, high), interpolation=cv2.INTER_NEAREST)
img3 = cv2.resize(img, (width, high), interpolation=cv2.INTER_AREA)
img4 = cv2.resize(img, (width, high), interpolation=cv2.INTER_CUBIC)
img5 = cv2.resize(img, (width, high), interpolation=cv2.INTER_LANCZOS4)
cv2.imshow("orgion",img)
cv2.imshow("INTER_LINEAR",img1)
cv2.imshow("INTER_NEAREST",img2)
cv2.imshow("INTER_AREA",img3)
cv2.imshow("INTER_CUBIC",img4)
cv2.imshow("INTER_LANCZOS4",img5)
cv2.waitKey(-1)
cv2.destroyAllWindows()
翻转
cv2.flip()函数用于反转图像
dst = cv2.flip(src,flipCode) dst表示转换后的图像 src表示原图像 flipCode表示反转类型
flipCode 说明 0 绕x轴翻转(垂直翻转) 1 绕y轴翻转(水平翻转) -1 绕x轴和y轴翻转(垂直和水平翻转)
img = cv2.imread('test1.jpg')# 水平翻转-->1
# 垂直翻转-->0
# 水平+垂直翻转-->-1
img1 = cv2.flip(img, 1)
img2 = cv2.flip(img, 0)
img3 = cv2.flip(img, -1)
仿射
放射变换包含了平移、旋转、缩放等操作,其特点是:原图像中的所有平行线在转换后的图像中任然平行。OpenCV的cv2.warpAffine()函数用于实现图像的仿射变换。
dst = cv2.warpAffine(src,M,dsize[,dst[,flags[,borderMode[,broderValue]]]])
dst表示转换后的图像
src表示原图像
M是一个大小为2*3的转换矩阵,使用不同的转换矩阵可实现平移、旋转等多种操作
dsize为转换后图像的大小
flags为插值方式
borderMode为边类型
broderValue为边界值
透视
平行四边形仿射是将图像变换为任意平行四边形,而透视则把图像变换为任意四边形。
import numpy as np
import cv2
toushi = cv2.imread('toushi.jpg')
pts1 = np.float32([[350,400],[900,350],[290,1525],[1060,1475]])
pts2 = np.float32([[0,0],[600,0],[0,1200],[600,1200]])
M = cv2.getPerspectiveTransform(pts1,pts2)
dst = cv2.warpPerspective(toushi,M,(600,1200))
cv2.imshow("test0",toushi)
cv2.imshow("test1",dst)
cv2.waitKey(-1)
cv2.destroyAllWindows()
透视前图片 透视转换后效果

相关文章:
OpenCV-Python图像几何变换
概念:几何变换是指将一幅图像映射到另外一幅图像内的操作。OpenCV提供了多个与映射有关的函数,这些函数使用起来方便灵活,能够高效地完成图像的映射。 缩放 cv2.resize()函数用于缩放图像 det cv2.resize(src, dsize[,dst[,fx[,fy[,interp…...
国民技术N32G430开发笔记(15)- IAP升级 树莓派串口发送数据
IAP升级 树莓派串口发送数据 1、树莓派接入usb转串口模块后,会生成/dev/ttyUSB0节点,因为树莓派内核已经编译usb_serial以及各模块的驱动。 我们直接对ttyUSB0节点编程即可。 2、协议同上一节 cmd data_lenght data0 … datax checksum 1、获取版本…...
svo论文解读
SVO: Semi-Direct Visual Odometry for Monocular and Multi-Camera Systems 2016TRO MOTION ESTIMATION 1 Sparse Image Alignment 从上一帧的特征投影到当前帧,最小化重投影误差计算帧间位姿(patch44) 2 Relaxation Through Feature Alig…...
DolphinScheduler海豚调度教程
DolphinScheduler 教程 (一)入门指南 简介 关于Dolphin Apache DolphinScheduler是一个分布式易扩展的可视化DAG工作流任务调度开源系统。解决数据研发ETL 错综复杂的依赖关系,不能直观监控任务健康状态等问题。DolphinScheduler以DAG流式…...
ubuntu脚本解释器踩坑:#!/bin/bash 与 #!/bin/sh
前言: 博主正在写linux的脚本的时候遇到:xx.sh: 3: Syntax error: "(" unexpected 查看shell脚本语法没有问题,后面发现是解释器的原因。 一、不同的解释器 #!是特殊的表示符,其后面根的是此解释此脚本的shell的路径…...
小松鼠踩一踩游戏
文章目录 一、 介绍和知识点九、UnityFacade 门面设计模式二、 声音全局管理器测试音频代码UI全局管理器父类抽象类 BaseManager子类 UIManager 四、 UI按钮的引用父类 BasePanel子类主面板 MainPanel子类 游戏中 GamePanel子类 游戏结果 ResultPanel 角色动画器、控制角色移动…...
使用crontab命令同步时间
crontab命令可以用于在Linux系统中定期同步时间。常用的时间同步方法有: 1. 使用ntpdate同步时间 可以添加如下crontab任务: */5 * * * * /usr/sbin/ntpdate time.nist.gov http://xn–5time-rg2hnkqin4vhsb6x8meq6d7yxa.nist.gov/ NTP服务器同步一次时间。 2. 使用ntpd作为…...
TortoiseGit提示No supported authentication methods available异常
TortoiseGit他属于git的客户端,可有可无,说白了就是将git命令给我们整理成了可直接操作的按钮。 本地代码是使用了SSH的方式去拉取的代码,但是通过TortoiseGit pull代码的时候发生了如下异常,而GitBash却可以正常使用。 TortoiseG…...
基于哈希表的用户管理系统
三大模块: - 哈希表模块 哈希函数 哈希表创建 哈希表销毁 - 用户管理模块 显示 增 删 改 查 - 文件模块 从文件导入用户信息 将用户信息导出至文件 1.哈希函数 //hash函数(质数除余法) int Hash_Fun1(data_type key){int pos key%P;…...
GO数组切片-线性数据结构
数据结构 类型 什么是类型 ? 内存中的二进制数据本身没有什么区别,就是一串0或1的组合。 内存中有一个字节内容是0x63,他究竟是深恶 字符串?字符?还是整数? 本来0x63表示数字 但是文字必须编码成为0和1的组合 才能记…...
C++ STL学习之【优先级队列】
✨个人主页: 北 海 🎉所属专栏: C修行之路 🎃操作环境: Visual Studio 2019 版本 16.11.17 文章目录 🌇前言🏙️正文1、优先级队列的使用1.1、基本功能1.2、优先级模式切换1.3、相关题目 2、模拟…...
keepalived脑裂现象
Keepealived最常见的问题是会出现脑裂现象: Master一直发送心跳消息给backup主机,如果中间的链路突然断掉,backup主机将无法收到master主机发送过来的心跳消息(也就是vrrp报文),backup这时候会立即抢占mas…...
[stable-diffusion-art] 指北-1
https://stable-diffusion-art.com/beginners-guide/https://stable-diffusion-art.com/beginners-guide/ Stable Diffusion教程目录 - 知乎按: 这个外国教程站中的文章太好了,数量适当,质量很高可惜博文只能按时间浏览,所以整理…...
「C/C++」C/C++预处理器
博客主页:何曾参静谧的博客 文章专栏:「C/C」C/C学习 目录 一、宏替换 #define1. 定义常量2. 定义函数3. 定义代码块 二、条件编译 #if1. 使用 #ifdef、 #else 和 #endif2. 使用 #if 、#elif、#else和 #endif 编译不同版本的代码3. 使用 #ifndef 和 #def…...
java语言入门教程文章
好的,以下是Java语言入门教程: Java是一种高级编程语言,由Sun Microsystems于1995年推出。Java语言具有良好的可移植性和安全性,因此被广泛应用于Web应用程序、移动应用程序、企业应用程序等各个领域。本教程将带领初学者快速入门…...
基于灰狼算法的极限学习机(ELM)回归预测-附代码
基于灰狼算法的极限学习机(ELM)回归预测 文章目录 基于灰狼算法的极限学习机(ELM)回归预测1.极限学习机原理概述2.ELM学习算法3.回归问题数据处理4.基于灰狼算法优化的ELM5.测试结果6.参考文献7.Matlab代码 摘要:本文利用灰狼算法对极限学习机进行优化,并…...
【五一创作】ERP实施-委外业务-委外采购业务
委外业务主要有两种业务形态:委外采购和工序外协,委外采购主要是在MM模块中实现,工序外协主要由PP模块实现,工序外协中的采购订单创建和采购收货由MM模块实现。 委外采购概念 委外采购,有些企业也称为带料委外或者分包…...
DAY 54 数据库基础
数据库的基本概念 数据(Data): 描述事务的符号记录包括数字、文字、图形、图像、声音、档案记录以”记录“形式按统一的格式进行存储 表: 将不同的记录组织在一起用来存储具体数据 数据库: 表的集合,…...
网络编程 总结二
一、TCP TCP模型 1. TCP搭建相关函数: 套接字Socket 1)Socket函数: 2)bind 3)listen 4)accept 5)recv 注意: 1> TCP中的recv 可以替换成read; 2>TCP中的…...
消息称苹果Type-C口充电未设MFi限制,iOS17将更新Find My服务
根据国外科技媒体 iMore 报道,基于消息源 analyst941 透露的信息,苹果公司目前并未开发 MFi 限制。 根据推文信息内容,两款 iPhone 15 机型的最高充电功率为 20W,而 iPhone 15 Pro 机型的最高支持 27W 充电。 此前古尔曼表示苹…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
