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修改操作系统时间的方法
May 18 Python
详解Python的Django框架中manage命令的使用与扩展
Apr 11 Python
PyQt5利用QPainter绘制各种图形的实例
Oct 19 Python
Python3.7实现中控考勤机自动连接
Aug 28 Python
TensorFlow卷积神经网络之使用训练好的模型识别猫狗图片
Mar 14 Python
Python实现的文轩网爬虫完整示例
May 16 Python
python3 动态模块导入与全局变量使用实例
Dec 22 Python
Python动态导入模块和反射机制详解
Feb 18 Python
基于Keras 循环训练模型跑数据时内存泄漏的解决方式
Jun 11 Python
python的launcher用法知识点总结
Aug 07 Python
JupyterNotebook 输出窗口的显示效果调整实现
Sep 22 Python
python 实现表情识别
Nov 21 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/09/30 PHP
for循环连续求和、九九乘法表代码
2012/02/20 PHP
php连接mysql数据库最简单的实现方法
2019/09/24 PHP
Javascript 调试利器 Firebug使用详解六
2009/07/05 Javascript
Jquery加载时从后台读取数据绑定到dropdownList实例
2013/06/09 Javascript
Jquery 过滤器(first,last,not,even,odd)的使用
2014/01/22 Javascript
jquery插件unobtrusive实现片段式加载
2015/06/15 Javascript
javascript中错误使用var造成undefined
2016/03/31 Javascript
jQuery ajax中使用confirm,确认是否删除的简单实例
2016/06/17 Javascript
JS实现禁止鼠标右键的功能
2016/10/15 Javascript
基于JS实现仿百度百家主页的轮播图效果
2017/03/06 Javascript
基于模板引擎Jade的应用(详解)
2017/12/12 Javascript
三步实现ionic3点击退出app程序
2019/09/17 Javascript
JS实现普通轮播图特效
2020/01/01 Javascript
javascript设计模式 ? 原型模式原理与应用实例分析
2020/04/10 Javascript
vue 使用 v-model 双向绑定父子组件的值遇见的问题及解决方案
2021/03/01 Vue.js
[02:01]大师之路——DOTA2完美大师赛11月论剑上海
2017/11/06 DOTA
浅谈python字符串方法的简单使用
2016/07/18 Python
解决Pycharm无法import自己安装的第三方module问题
2018/05/18 Python
python画图把时间作为横坐标的方法
2019/07/07 Python
python tkinter实现彩球碰撞屏保
2019/07/30 Python
python nmap实现端口扫描器教程
2020/05/28 Python
python 扩展print打印文件路径和当前时间信息的实例代码
2019/10/11 Python
python 可视化库PyG2Plot的使用
2021/01/21 Python
CSS3中Transition动画属性用法详解
2016/07/04 HTML / CSS
使用纯HTML5编写一款网页上的时钟的代码分享
2015/11/16 HTML / CSS
TripAdvisor越南:全球领先的旅游网站
2017/09/21 全球购物
培训心得体会
2013/12/29 职场文书
中秋寄语大全
2014/04/11 职场文书
仲裁协议书
2014/09/26 职场文书
2016公司新年问候语
2015/11/11 职场文书
优秀创业计划书分享
2019/07/19 职场文书
青年人初次创业的“五不要”
2019/08/23 职场文书
辞职报告(范文三篇)
2019/08/27 职场文书
Java实现斗地主之洗牌发牌
2021/06/14 Java/Android
mysql5.6主从搭建以及不同步问题详解
2021/12/04 MySQL