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 相关文章推荐
pyqt4教程之实现半透明的天气预报界面示例
Mar 02 Python
Python 元组(Tuple)操作详解
Mar 11 Python
使用python遍历指定城市的一周气温
Mar 31 Python
浅谈Django REST Framework限速
Dec 12 Python
python机器学习实战之最近邻kNN分类器
Dec 20 Python
关于Python中定制类的比较运算实例
Dec 19 Python
python输出pdf文档的实例
Feb 13 Python
python实现将range()函数生成的数字存储在一个列表中
Apr 02 Python
Python自动化操作实现图例绘制
Jul 09 Python
python编写实现抽奖器
Sep 10 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
Feb 25 Python
Python趣味爬虫之用Python实现智慧校园一键评教
May 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笔试题
2009/08/04 PHP
50个PHP程序性能优化的方法
2014/06/02 PHP
php实现修改新闻时删除图片的方法
2015/05/12 PHP
apache和PHP如何整合在一起
2015/10/12 PHP
php封装json通信接口详解及实例
2017/03/07 PHP
用JavaScript对JSON进行模式匹配 (Part 2 - 实现)
2010/07/17 Javascript
左右悬浮可分组的网站QQ在线客服代码(可谓经典)
2012/12/21 Javascript
如何阻止复制剪切和粘贴事件为了表单内容的安全
2013/05/23 Javascript
js全选实现和判断是否有复选框选中的方法
2015/02/17 Javascript
js数组如何添加json数据及js数组与json的区别
2015/10/27 Javascript
《JavaScript高级编程》学习笔记之object和array引用类型
2015/11/01 Javascript
AngularJS在IE下取数据总是缓存问题的解决方法
2016/08/05 Javascript
jquery实现网站列表切换效果的2种方法
2016/08/12 Javascript
angularjs 中$apply,$digest,$watch详解
2016/10/13 Javascript
微信小程序开发之map地图实现教程
2017/06/08 Javascript
vue中七牛插件使用的实例代码
2017/07/28 Javascript
基于jQuery的左滑出现删除按钮的示例
2017/08/29 jQuery
jquery ajaxfileupload异步上传插件
2017/11/21 jQuery
快速了解vue-cli 3.0 新特性
2018/02/28 Javascript
react配合antd组件实现的管理系统示例代码
2018/04/24 Javascript
vue项目中应用ueditor自定义上传按钮功能
2018/04/27 Javascript
[41:05]Serenity vs Pain 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python3使用requests发闪存的方法
2016/05/11 Python
详解python执行shell脚本创建用户及相关操作
2019/04/11 Python
pytorch 实现查看网络中的参数
2020/01/06 Python
tensorflow实现在函数中用tf.Print输出中间值
2020/01/21 Python
Python内置类型性能分析过程实例
2020/01/29 Python
通过Python实现一个简单的html页面
2020/05/16 Python
CSS3 Backgrounds属性相关介绍
2011/05/11 HTML / CSS
诗狄娜化妆品官方网站:Stila Cosmetics
2016/12/21 全球购物
应届生船舶驾驶求职信
2013/10/19 职场文书
自我鉴定书面格式
2014/01/13 职场文书
会展策划与管理专业大学生职业生涯规划
2014/02/07 职场文书
管理工程专业求职信
2014/08/10 职场文书
公司保洁员管理制度
2015/08/04 职场文书
销区经理年终述职报告模板
2019/11/28 职场文书