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中的一些高级编程技巧
Apr 02 Python
PyQt5利用QPainter绘制各种图形的实例
Oct 19 Python
Django视图之ORM数据库查询操作API的实例
Oct 27 Python
20个常用Python运维库和模块
Feb 12 Python
浅谈python numpy中nonzero()的用法
Apr 02 Python
图解Python变量与赋值
Apr 03 Python
详解pyenv下使用python matplotlib模块的问题解决
Nov 29 Python
BP神经网络原理及Python实现代码
Dec 18 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
Apr 18 Python
python的常见矩阵运算(小结)
Aug 07 Python
在OpenCV里使用Camshift算法的实现
Nov 22 Python
python使用gdal对shp读取,新建和更新的实例
Mar 10 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实现将GB编码转换为UTF8
2006/11/25 PHP
用php来改写404错误页让你的页面更友好
2013/01/24 PHP
PHP+jQuery翻板抽奖功能实现
2015/10/19 PHP
javascript ie6兼容position:fixed实现思路
2013/04/01 Javascript
jQuery中 noConflict() 方法使用
2013/04/25 Javascript
js窗口关闭提示信息(兼容IE和firefox)
2015/10/23 Javascript
浅析Bootstrap表格的使用
2016/06/23 Javascript
EasyUI创建对话框的两种方式
2016/08/23 Javascript
javascript 内置对象及常见API详细介绍
2016/11/01 Javascript
JavaScript实现提交模式窗口后刷新父窗口数据的方法
2017/06/16 Javascript
使用Vue开发一个实时性时间转换指令
2018/01/17 Javascript
json 带斜杠时如何解析的实现
2019/08/12 Javascript
详解如何在JS代码中消灭for循环
2019/12/11 Javascript
vue项目,代码提交至码云,iconfont的用法说明
2020/07/30 Javascript
Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例
2020/11/18 Vue.js
Python pass 语句使用示例
2014/03/11 Python
Python入门学习指南分享
2018/04/11 Python
Django中ORM外键和表的关系详解
2019/05/20 Python
Python语言进阶知识点总结
2019/05/28 Python
CSS3 Notes: -webkit-box-reflect实现倒影的实例
2016/12/08 HTML / CSS
表达自我的市场:Society6
2018/08/01 全球购物
迪士尼西班牙官方网上商店:ShopDisney西班牙
2020/02/02 全球购物
开水果连锁店创业计划书
2013/12/29 职场文书
工业自动化专业自荐信范文
2014/04/10 职场文书
冬季施工防火方案
2014/05/17 职场文书
行政秘书工作自我鉴定
2014/09/15 职场文书
标准离婚协议书(2014版)
2014/10/05 职场文书
教师党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
2014光棍节单身联谊活动策划书
2014/10/10 职场文书
上课睡觉检讨书300字
2014/11/18 职场文书
三方协议书
2015/01/27 职场文书
民主生活会主持词
2015/07/01 职场文书
文艺有韵味的诗句(生命类、亲情类...)
2019/07/11 职场文书
python读取pdf格式文档的实现代码
2021/04/01 Python
Python编写可视化界面的全过程(Python+PyCharm+PyQt)
2021/05/17 Python
python中%格式表达式实例用法
2021/06/18 Python