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中使用SAX解析xml实例
Nov 21 Python
python实现搜索指定目录下文件及文件内搜索指定关键词的方法
Jun 28 Python
python+django+sql学生信息管理后台开发
Jan 11 Python
用pycharm开发django项目示例代码
Oct 24 Python
Python中的元组介绍
Jan 28 Python
pandas分组聚合详解
Apr 10 Python
win7上tensorflow2.2.0安装成功 引用DLL load failed时找不到指定模块 tensorflow has no attribute xxx 解决方法
May 20 Python
python能开发游戏吗
Jun 11 Python
python属于软件吗
Jun 18 Python
Python自动化测试PO模型封装过程详解
Jun 22 Python
Python中生成随机数据安全性、多功能性、用途和速度方面进行比较
Apr 14 Python
python playwright之元素定位示例详解
Jul 23 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
PHP4之真OO
2006/10/09 PHP
Codeigniter(CI)框架分页函数及相关知识
2014/11/03 PHP
PHP中生成UUID自定义函数分享
2015/06/10 PHP
golang与PHP输出excel示例
2016/07/22 PHP
yii框架数据库关联查询操作示例
2019/10/14 PHP
javascript 异常处理使用总结
2009/06/21 Javascript
jQuery EasyUI中对表格进行编辑的实现代码
2010/06/10 Javascript
javascript onmouseout 解决办法
2010/07/17 Javascript
formStorage 基于jquery的一个插件(存储表单中元素的状态到本地)
2012/01/20 Javascript
使用jquery选择器如何获取父级元素、同级元素、子元素
2014/05/14 Javascript
浅析jQuery中调用ajax方法时在不同浏览器中遇到的问题
2014/06/11 Javascript
javascript常用方法汇总
2014/12/02 Javascript
js实现同一页面可多次调用的图片幻灯切换效果
2015/02/28 Javascript
javascript中innerText和innerHTML属性用法实例分析
2015/05/13 Javascript
在AngularJS应用中实现一些动画效果的代码
2015/06/18 Javascript
Angularjs中使用layDate日期控件示例
2017/01/11 Javascript
BootStrap实现鼠标悬停下拉列表功能
2017/02/17 Javascript
JS实现颜色动态淡化效果
2017/03/06 Javascript
基于vue.js无缝滚动效果
2018/01/25 Javascript
angularJs自定义过滤器实现手机号信息隐藏的方法
2018/10/08 Javascript
解析JS在获取当前月的最后一天遇到的坑
2019/08/30 Javascript
快速解决layui弹窗按enter键不停弹窗的问题
2019/09/18 Javascript
微信小程序防止多次点击跳转(函数节流)
2019/09/19 Javascript
Vue 嵌套路由使用总结(推荐)
2020/01/13 Javascript
在Django中创建动态视图的教程
2015/07/15 Python
python多进程和多线程究竟谁更快(详解)
2017/05/29 Python
Python实现Dijkstra算法
2018/10/17 Python
django模板获取list中指定索引的值方式
2020/05/14 Python
Python描述数据结构学习之哈夫曼树篇
2020/09/07 Python
python中os.remove()用法及注意事项
2021/01/31 Python
HTML5 预加载让页面得以快速呈现
2013/08/13 HTML / CSS
德国电子产品购物网站:TechInTheBasket德国
2018/12/07 全球购物
诉讼代理人授权委托书
2014/04/08 职场文书
预备党员考察意见范文
2015/06/01 职场文书
民间借贷纠纷起诉书
2015/08/03 职场文书
教你利用python实现企业微信发送消息
2021/05/23 Python