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基于PycURL自动处理cookie的方法
Jul 25 Python
Python爬取京东的商品分类与链接
Aug 26 Python
Python编程实现微信企业号文本消息推送功能示例
Aug 21 Python
利用python批量修改word文件名的方法示例
Oct 17 Python
python批量替换多文件字符串问题详解
Apr 22 Python
python 中字典嵌套列表的方法
Jul 03 Python
Tensorflow 合并通道及加载子模型的方法
Jul 26 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
Oct 11 Python
linux中如何使用python3获取ip地址
Jul 15 Python
简单分析python的类变量、实例变量
Aug 23 Python
详解在python操作数据库中游标的使用方法
Nov 12 Python
Python通过正则库爬取淘宝商品信息代码实例
Mar 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 快速生成 Flash 动画的方法
2007/03/06 PHP
DEDE实现转跳属性文档在模板上调用出转跳地址
2016/11/04 PHP
[原创]PHPCMS遭遇会员投稿审核无效的解决方法
2017/01/11 PHP
PHP大文件分割上传 PHP分片上传
2017/08/28 PHP
php生成条形码的图片的实例详解
2017/09/13 PHP
jQuery 表单验证插件formValidation实现个性化错误提示
2009/06/23 Javascript
浅谈JavaScript Array对象
2014/12/29 Javascript
jquery+ajax实现跨域请求的方法
2015/01/20 Javascript
JS区分浏览器页面是刷新还是关闭
2016/04/17 Javascript
jQuery3.0中的buildFragment私有函数详解
2016/08/16 Javascript
jQuery内存泄露解决办法
2016/12/13 Javascript
javascript函数的四种调用模式
2017/01/08 Javascript
JS控件bootstrap suggest plugin使用方法详解
2017/03/25 Javascript
解决Vue 通过下表修改数组,页面不渲染的问题
2018/03/08 Javascript
node前端开发模板引擎Jade的入门
2018/05/11 Javascript
javascript中的event loop事件循环详解
2018/12/14 Javascript
[40:31]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python request设置HTTPS代理代码解析
2018/02/12 Python
Python 运行 shell 获取输出结果的实例
2019/01/07 Python
django重新生成数据库中的某张表方法
2019/08/28 Python
python爬虫 线程池创建并获取文件代码实例
2019/09/28 Python
Django model重写save方法及update踩坑详解
2020/07/27 Python
全面解析CSS Media媒体查询使用操作(推荐)
2017/08/15 HTML / CSS
css3的图形3d翻转效果应用示例
2014/04/08 HTML / CSS
网络通讯中,端口有什么含义,端口的取值范围
2012/11/23 面试题
do you have any Best Practice for testing
2016/06/04 面试题
EJB面试题
2015/07/28 面试题
利用promise及参数解构封装ajax请求的方法
2021/03/24 Javascript
文员自我评价怎么写
2013/09/19 职场文书
促销活动方案模板
2014/02/24 职场文书
工商企业管理专业自荐信范文
2014/04/12 职场文书
文明市民先进事迹
2014/05/15 职场文书
乡镇挂职心得体会
2014/09/04 职场文书
中学综治宣传月活动总结
2015/05/07 职场文书
Python源码解析之List
2021/05/21 Python
spring cloud eureka 服务启动失败的原因分析及解决方法
2022/03/17 Java/Android