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使用Supervisor来管理进程的方法
May 28 Python
Python优化技巧之利用ctypes提高执行速度
Sep 11 Python
pandas 转换成行列表进行读取与Nan处理的方法
Oct 30 Python
Python Numpy:找到list中的np.nan值方法
Oct 30 Python
对python的bytes类型数据split分割切片方法
Dec 04 Python
Python小游戏之300行代码实现俄罗斯方块
Jan 04 Python
Python txt文件加入字典并查询的方法
Jan 15 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
Sep 25 Python
python 实现线程之间的通信示例
Feb 14 Python
python数据爬下来保存的位置
Feb 17 Python
django queryset相加和筛选教程
May 18 Python
python 实现汉诺塔游戏
Nov 28 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 xml-rpc远程调用
2008/12/19 PHP
ThinkPHP采用原生query实现关联查询left join实例
2014/12/02 PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
2016/02/26 PHP
PHP实现函数内修改外部变量值的方法示例
2018/12/28 PHP
微信公众平台开发教程⑥ 微信开发集成类的使用图文详解
2019/04/10 PHP
PHP+ajax实现上传、删除、修改单张图片及后台处理逻辑操作详解
2020/02/12 PHP
PHP操作Redis常用命令的实例详解
2020/12/23 PHP
js定时器(执行一次、重复执行)
2014/03/07 Javascript
JavaScript打印网页指定区域的例子
2014/05/03 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
2015/05/03 Javascript
JS定时器使用,定时定点,固定时刻,循环执行详解
2016/05/31 Javascript
Node.js 文件夹目录结构创建实例代码
2016/07/08 Javascript
解析JS在获取当前月的最后一天遇到的坑
2019/08/30 Javascript
layui checkbox默认选中,获取选中值,清空所有选中项的例子
2019/09/02 Javascript
多种类型jQuery网页验证码插件代码实例
2021/01/09 jQuery
Python生成随机密码
2015/03/10 Python
Python实现MySQL操作的方法小结【安装,连接,增删改查等】
2017/07/12 Python
python使用pil库实现图片合成实例代码
2018/01/20 Python
PyCharm设置SSH远程调试的方法
2018/07/17 Python
mac安装pytorch及系统的numpy更新方法
2018/07/26 Python
Python字节单位转换实例
2019/12/05 Python
python数据爬下来保存的位置
2020/02/17 Python
python pyqtgraph 保存图片到本地的实例
2020/03/14 Python
解决python运行效率不高的问题
2020/07/20 Python
django使用channels实现通信的示例
2020/10/19 Python
Selenium关闭INFO:CONSOLE提示的解决
2020/12/07 Python
Python OpenCV中的numpy与图像类型转换操作
2020/12/11 Python
英国信箱在线鲜花速递公司:Bloom & Wild
2019/03/10 全球购物
英国第一职业高尔夫商店:Clickgolf.co.uk
2020/11/18 全球购物
宿舍保安职务说明书
2014/02/25 职场文书
大学生全国两会报告感想
2014/03/17 职场文书
C++程序员求职信范文
2014/04/14 职场文书
祖国在我心中演讲稿500字
2014/05/04 职场文书
推荐信模板
2014/05/09 职场文书
求职推荐信范文
2015/03/27 职场文书
Ruby处理YAML和json数据
2022/04/18 Ruby