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查看多台服务器进程的脚本分享
Jun 11 Python
零基础写python爬虫之抓取百度贴吧并存储到本地txt文件改进版
Nov 06 Python
使用Python导出Excel图表以及导出为图片的方法
Nov 07 Python
Python类的继承和多态代码详解
Dec 27 Python
浅谈Python采集网页时正则表达式匹配换行符的问题
Dec 20 Python
django项目用higcharts统计最近七天文章点击量
Aug 17 Python
Python values()与itervalues()的用法详解
Nov 27 Python
Python print不能立即打印的解决方式
Feb 19 Python
Python基于pyecharts实现关联图绘制
Mar 27 Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
Apr 22 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
Jun 15 Python
基于django和dropzone.js实现上传文件
Nov 24 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代码
2012/06/08 PHP
php文件服务实现虚拟挂载其他目录示例
2014/04/17 PHP
mysql_connect localhost和127.0.0.1的区别(网络层阐述)
2015/03/26 PHP
PHP使用DOM和simplexml读取xml文档的方法示例
2017/02/08 PHP
php中序列化与反序列化详解
2017/02/13 PHP
你需要知道的JavsScript可以做什么?
2007/06/29 Javascript
javascript中的关于类型转换的性能优化
2010/12/14 Javascript
在JavaScript中监听IME键盘输入事件
2011/05/29 Javascript
javascript开发技术大全 第4章 直接量与字符集
2011/07/03 Javascript
js下将阿拉伯数字每三位一逗号分隔(如:15000000转化为15,000,000)
2014/06/02 Javascript
jQuery切换网页皮肤并保存到Cookie示例代码
2014/06/16 Javascript
nodejs npm package.json中文文档
2014/09/04 NodeJs
JavaScript点击按钮后弹出透明浮动层的方法
2015/05/11 Javascript
jQuery移动web开发之页面跳转和加载外部页面的实现
2015/12/04 Javascript
微信QQ的二维码登录原理js代码解析
2016/06/23 Javascript
jQuery on()方法绑定动态元素的点击事件无响应的解决办法
2016/07/07 Javascript
jQuery Validate验证表单时多个name相同的元素只验证第一个的解决方法
2016/12/24 Javascript
JS前向后瞻正则表达式定义与用法示例
2016/12/27 Javascript
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
利用js给datalist或select动态添加option选项的方法
2018/01/25 Javascript
微信小程序如何再次获取用户授权的方法
2019/05/10 Javascript
vue+axios实现post文件下载
2019/09/25 Javascript
在JavaScript中实现链式调用的实现
2019/12/24 Javascript
vue 计算属性和侦听器的使用小结
2021/01/25 Vue.js
浅谈pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
2018/04/10 Python
在Django下创建项目以及设置settings.py教程
2019/12/03 Python
python属于软件吗
2020/06/18 Python
美国糖果店:Sugarfina
2019/02/21 全球购物
阿姆斯特丹杜莎夫人蜡像馆官方网站:Madame Tussauds Amsterdam
2019/03/12 全球购物
思想政治自我鉴定
2013/10/06 职场文书
《诚实与信任》教学反思
2014/04/10 职场文书
学习经验演讲稿
2014/05/10 职场文书
奥林匹克运动会口号
2014/06/19 职场文书
个人求职自荐信范文
2014/06/20 职场文书
观后感的写法
2015/06/19 职场文书
2016年员工年度考核评语
2015/12/02 职场文书