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 File readlines() 使用方法
Mar 19 Python
python3中的md5加密实例
May 29 Python
django 多数据库配置教程
May 30 Python
浅谈python中对于json写入txt文件的编码问题
Jun 07 Python
Python中collections模块的基本使用教程
Dec 07 Python
python f-string式格式化听语音流程讲解
Jun 18 Python
关于django 1.10 CSRF验证失败的解决方法
Aug 31 Python
PyQt5中向单元格添加控件的方法示例
Mar 24 Python
Python实现读取并写入Excel文件过程解析
May 27 Python
Python 执行矩阵与线性代数运算
Aug 01 Python
Python第三方库安装缓慢的解决方法
Feb 06 Python
python自动化操作之动态验证码、滑动验证码的降噪和识别
Aug 30 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&&mysql)二
2006/10/09 PHP
调整优化您的LAMP应用程序的5种简单方法
2011/06/26 PHP
php统计文章排行示例
2014/03/04 PHP
基于thinkphp6.0的success、error实现方法
2019/11/05 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
php自动加载代码实例详解
2021/02/26 PHP
让焦点自动跳转
2006/07/01 Javascript
jquery中实现标签切换效果的代码
2011/03/01 Javascript
JS.getTextContent(element,preformatted)使用介绍
2013/09/21 Javascript
js中的referrer返回上一页使用介绍
2013/09/26 Javascript
javascript删除字符串最后一个字符
2014/01/14 Javascript
jQuery检测输入的字符串包含的中英文的数量
2015/04/17 Javascript
js简单实现竖向tab选项卡的方法
2015/05/04 Javascript
jQuery中extend()和fn.extend()方法详解
2015/06/03 Javascript
探讨JavaScript中的Rest参数和参数默认值
2015/07/29 Javascript
jquery.mousewheel实现整屏翻屏效果
2015/08/30 Javascript
实践中学习AngularJS表单
2016/03/21 Javascript
JavaScript实现shuffle数组洗牌操作示例
2019/01/03 Javascript
解决vue 子组件修改父组件传来的props值报错问题
2019/11/09 Javascript
js实现移动端轮播图滑动切换
2020/12/21 Javascript
最近Python有点火? 给你7个学习它的理由!
2017/06/26 Python
Python操作mongodb的9个步骤
2018/06/04 Python
python爬虫之urllib3的使用示例
2018/07/09 Python
使用python itchat包爬取微信好友头像形成矩形头像集的方法
2019/02/21 Python
python与字符编码问题
2019/05/24 Python
使用 Django Highcharts 实现数据可视化过程解析
2019/07/31 Python
pandas 对日期类型数据的处理方法详解
2019/08/08 Python
Python 基于FIR实现Hilbert滤波器求信号包络详解
2020/02/26 Python
Python 分布式缓存之Reids数据类型操作详解
2020/06/24 Python
html5自带表单验证体验优化及提示气泡修改功能
2017/09/12 HTML / CSS
医学生个人求职信范文
2013/09/24 职场文书
现金会计岗位职责
2013/12/05 职场文书
搬家公司的创业计划书
2014/01/01 职场文书
2014年护理工作总结范文
2014/11/14 职场文书
2016大学生党校学习心得体会
2016/01/06 职场文书
Redis实现一个账号只能登录一个设备
2022/04/19 Redis