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比较2个xml内容的方法
May 11 Python
python通过加号运算符操作列表的方法
Jul 28 Python
python实现下载整个ftp目录的方法
Jan 17 Python
浅谈python迭代器
Nov 08 Python
使用python 计算百分位数实现数据分箱代码
Mar 03 Python
Python3.7 读取音频根据文件名生成脚本的代码
Apr 07 Python
Keras设置以及获取权重的实现
Jun 19 Python
Python3爬虫中关于Ajax分析方法的总结
Jul 10 Python
通俗讲解python 装饰器
Sep 07 Python
教你用Python爬取英雄联盟皮肤原画
Jun 13 Python
Django REST framework 限流功能的使用
Jun 24 Python
Python常遇到的错误和异常
Nov 02 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生成随机数/生成随机字符串的方法小结【5种方法】
2020/05/27 PHP
js FLASH幻灯片字符串中有连接符&的处理方法
2012/03/01 Javascript
jquery使用经验小结
2015/05/20 Javascript
7个jQuery最佳实践
2016/01/12 Javascript
jQuery绑定事件on()与弹窗的简要概述
2016/04/27 Javascript
jQuery实现布局高宽自适应的简单实例
2016/05/28 Javascript
JavaScript比较当前时间是否在指定时间段内的方法
2016/08/02 Javascript
js 倒计时(高效率服务器时间同步)
2017/09/12 Javascript
浅谈ng-zorro使用心得
2018/12/03 Javascript
vue+element 模态框表格形式的可编辑表单实现
2019/06/07 Javascript
vue2路由方式--嵌套路由实现方法分析
2020/03/06 Javascript
JS面试题中深拷贝的实现讲解
2020/05/07 Javascript
[04:42]5分钟带你了解什么是DOTA2(第一期)
2017/02/07 DOTA
[48:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 VG vs KG
2018/03/31 DOTA
Python中实现结构相似的函数调用方法
2015/03/10 Python
Python编程判断一个正整数是否为素数的方法
2017/04/14 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
2019/07/11 Python
Python 实现数据结构-循环队列的操作方法
2019/07/17 Python
Django模板导入母版继承和自定义返回Html片段过程解析
2019/09/18 Python
使用 Python 清理收藏夹里已失效的网站
2019/12/03 Python
Python求两个字符串最长公共子序列代码实例
2020/03/05 Python
python实现超级玛丽游戏
2020/03/18 Python
python查询MySQL将数据写入Excel
2020/10/29 Python
CSS类名支持中文命名的示例
2014/04/04 HTML / CSS
html5拖曳操作 HTML5实现网页元素的拖放操作
2013/01/02 HTML / CSS
阿联酋航空官方网站:Emirates
2017/10/17 全球购物
美国棒球装备和用品商店:Baseball Savings
2018/06/09 全球购物
玛蒂尔达简服装:Matilda Jane Clothing
2019/02/13 全球购物
智能室内花园:Click & Grow
2021/01/29 全球购物
中专生职业生涯规划书范文
2013/12/29 职场文书
保密工作承诺书
2014/08/29 职场文书
综合素质自我评价评语
2015/03/06 职场文书
工作感言一句话
2015/08/01 职场文书
《分数乘法》教学反思
2016/02/24 职场文书
导游词之藏龙百瀑景区
2019/12/30 职场文书
Go语言实现Snowflake雪花算法
2021/06/08 Golang