opencv实现图像几何变换


Posted in Python onMarch 24, 2021

图像伸缩(cv2.resize)

图像的扩大与缩小有专门的一个函数,cv2.resize(),那么关于伸缩需要确定的就是缩放比例,可以是x与y方向相同倍数,也可以单独设置x与y的缩放比例。另外一个就是在缩放以后图像必然就会变化,这就又涉及到一个插值问题。那么这个函数中,缩放有几种不同的插值(interpolation)方法,在缩小时推荐cv2.INTER_ARER,扩大是推荐cv2.INTER_CUBIC和cv2.INTER_LINEAR。默认都是cv2.INTER_LINEAR,比如:

import cv2
import matplotlib.pyplot as plt
 
img = cv2.imread('d:/1.jpg')
# 插值:interpolation
# None本应该是放图像大小的位置的,后面设置了缩放比例,
#所有就不要了
res1 = cv2.resize(img,None,fx=2,fy=2,interpolation=cv2.INTER_CUBIC)
#直接规定缩放大小,这个时候就不需要缩放因子
height,width = img.shape[:2]
res2 = cv2.resize(img,(2*width,2*height),interpolation=cv2.INTER_CUBIC)
plt.subplot(131)
plt.imshow(img)
plt.subplot(132)
plt.imshow(res1)
plt.subplot(133)
plt.imshow(res2)
plt.show()

opencv实现图像几何变换

图像平移(cv2.warpAffine)

opencv实现图像几何变换

import cv2
import numpy as np
import matplotlib.pyplot as plt
 
img = cv2.imread('d:/1.jpg')
H = np.float32([[1, 0, 100], [0, 1, 50]])
rows, cols = img.shape[:2]
res = cv2.warpAffine(img, H, (rows, cols)) # 需要图像、变换矩阵、变换后的大小
plt.subplot(121)
plt.imshow(img)
plt.subplot(122)
plt.imshow(res)
plt.show()

opencv实现图像几何变换

图像旋转(逆时针旋转,cv2.warpAffine和cv2.getRotationMatrix2D)

opencv实现图像几何变换

为了构造这个矩阵,opencv提供了一个函数:

cv2.getRotationMatrix2D(),这个函数需要三个参数,旋转中心,旋转角度,旋转后图像的缩放比例,比如下例:

import cv2
 import matplotlib.pyplot as plt
 
 img = cv2.imread('d:/1.jpg')
 rows, cols = img.shape[:2]
 # 第一个参数旋转中心,第二个参数旋转角度,第三个参数:缩放比例
 M = cv2.getRotationMatrix2D((cols / 2, rows / 2), 45, 1)
 # 第三个参数:变换后的图像大小
 res = cv2.warpAffine(img, M, (rows, cols))
 
 plt.subplot(121)
 plt.imshow(img)
 plt.subplot(122)
 plt.imshow(res)
 plt.show()

opencv实现图像几何变换

Python 相关文章推荐
python使用webbrowser浏览指定url的方法
Apr 04 Python
基于Python Numpy的数组array和矩阵matrix详解
Apr 04 Python
Python学习笔记之open()函数打开文件路径报错问题
Apr 28 Python
Selenium鼠标与键盘事件常用操作方法示例
Aug 13 Python
对python中的乘法dot和对应分量相乘multiply详解
Nov 14 Python
Django利用cookie保存用户登录信息的简单实现方法
May 27 Python
Python 动态导入对象,importlib.import_module()的使用方法
Aug 28 Python
flask框架渲染Jinja模板与传入模板变量操作详解
Jan 25 Python
python GUI库图形界面开发之PyQt5信号与槽基本操作
Feb 25 Python
Python3操作YAML文件格式方法解析
Apr 10 Python
Django 5种类型Session使用方法解析
Apr 29 Python
Python根据字典的值查询出对应的键的方法
Sep 30 Python
PyQt QMainWindow的使用示例
Mar 24 #Python
PyQt 如何创建自定义QWidget
Mar 24 #Python
解决python 输出到csv 出现多空行的情况
opencv实现图像平移效果
python+selenium小米商城红米K40手机自动抢购的示例代码
Python使用openpyxl复制整张sheet
Mar 24 #Python
基于Python 函数和方法的区别说明
Mar 24 #Python
You might like
php Undefined index和Undefined variable的解决方法
2008/03/27 PHP
CI使用Tank Auth转移数据库导致密码用户错误的解决办法
2014/06/12 PHP
PHP将HTML转换成文本的实现代码
2015/01/21 PHP
PHP实现RTX发送消息提醒的实例代码
2017/01/03 PHP
PHP receiveMail实现收邮件功能
2018/04/25 PHP
workerman结合laravel开发在线聊天应用的示例代码
2018/10/30 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
JavaScript和ActionScript的交互实现代码
2010/08/01 Javascript
javascript与jquery中跳出循环的区别总结
2013/11/04 Javascript
javascript 按键事件(兼容各浏览器)
2013/12/20 Javascript
JavaScript设计模式之抽象工厂模式介绍
2014/12/28 Javascript
jQuery中Form相关知识汇总
2015/01/06 Javascript
通过JS判断联网类型和连接状态的实现代码
2015/04/01 Javascript
jquery自定义插件开发之window的实现过程
2016/05/06 Javascript
轻松实现js弹框显示选项
2016/09/13 Javascript
基于百度地图api清除指定覆盖物(Overlay)的方法
2018/01/26 Javascript
vue2.0安装style/css loader的方法
2018/03/14 Javascript
深入了解query和params的使用区别
2019/06/24 Javascript
微信小程序日历插件代码实例
2019/12/04 Javascript
three.js 利用uv和ThreeBSP制作一个快递柜功能
2020/08/18 Javascript
详解Python中的静态方法与类成员方法
2017/02/28 Python
python之消除前缀重命名的方法
2018/10/21 Python
Python 单元测试(unittest)的使用小结
2018/11/14 Python
Python中的元组介绍
2019/01/28 Python
python @classmethod 的使用场合详解
2019/08/23 Python
解决windows下python3使用multiprocessing.Pool出现的问题
2020/04/08 Python
详解CSS3 filter:drop-shadow滤镜与box-shadow区别与应用
2020/08/24 HTML / CSS
CSS 3.0文字悬停跳动特效代码
2020/10/26 HTML / CSS
美国时尚在线:Showpo
2017/09/08 全球购物
Lacoste澳大利亚官网:服装、鞋类及配饰
2018/11/14 全球购物
应届生求职信范文
2014/05/26 职场文书
党的群众路线教育实践活动学习笔记范文
2014/11/06 职场文书
初中思想品德教学反思
2016/02/24 职场文书
如何用threejs实现实时多边形折射
2021/05/07 Javascript
springboot应用服务启动事件的监听实现
2022/04/06 Java/Android
CI Games宣布《堕落之王2》使用虚幻引擎5制作 预计将于2023年正式发售
2022/04/11 其他游戏