Python OpenCV中的resize()函数的使用


Posted in Python onJune 20, 2019

改变图像大小意味着改变尺寸,无论是单独的高或宽,还是两者。也可以按比例调整图像大小。

这里将介绍resize()函数的语法及实例。

语法

函数原型

cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])

参数:

参数 描述
src 【必需】原图像
dsize 【必需】输出图像所需大小
fx 【可选】沿水平轴的比例因子
fy 【可选】沿垂直轴的比例因子
interpolation 【可选】插值方式

【可选】插值方式

其中插值方式有很多种:

cv.INTER_NEAREST 最近邻插值
cv.INTER_LINEAR 双线性插值
cv.INTER_CUBIC 双线性插值
cv.INTER_AREA 使用像素区域关系重新采样。它可能是图像抽取的首选方法,因为它可以提供无莫尔条纹的结果。但是当图像被缩放时,它类似于INTER_NEAREST方法。

通常的,缩小使用cv.INTER_AREA,放缩使用cv.INTER_CUBIC(较慢)和cv.INTER_LINEAR(较快效果也不错)。默认情况下,所有的放缩都使用cv.INTER_LINEAR。

例子

保留高宽比

以下是我们将在其上进行实验的尺寸(149,200,4)(高度,宽度,通道数)的原始图像:

Python OpenCV中的resize()函数的使用

import cv2
 
img = cv2.imread('./Pictures/python.png', cv2.IMREAD_UNCHANGED)
 
print('Original Dimensions : ',img.shape)
 
scale_percent = 60  # percent of original size
width = int(img.shape[1] * scale_percent / 100)
height = int(img.shape[0] * scale_percent / 100)
dim = (width, height)
# resize image
resized = cv2.resize(img, dim, interpolation = cv2.INTER_AREA)
 
print('Resized Dimensions : ',resized.shape)
 
cv2.imshow("Resized image", resized)
cv2.waitKey(0)
cv2.destroyAllWindows()

结果:

Original Dimensions : (149, 200, 4)
Resized Dimensions : (89, 120, 4)

Python OpenCV中的resize()函数的使用

调节scale_percent可以放大或缩小。需要准备shape先高再宽,参数是先宽再高。

还有一种方式,就是使用自带的参数fx和fy,更加方便。

import cv2
img = cv2.imread("./Pictures/python.png")
print('Original Dimensions : ', img.shape)

resized = cv2.resize(img, None, fx=0.6, fy=0.6, interpolation=cv2.INTER_AREA)

print('Resized Dimensions : ',resized.shape)

cv2.imshow("resized_img", resized)
cv2.waitKey(0)

不保留高宽比

例如,改变宽度,高度不变:

import cv2

img = cv2.imread("./Pictures/python.png")

print('Original Dimensions : ',img.shape)
 
width = 440
height = img.shape[0] # keep original height
dim = (width, height)
 
# resize image
resized = cv2.resize(img, dim, interpolation = cv2.INTER_AREA)
 
print('Resized Dimensions : ',resized.shape)
 
cv2.imshow("Resized image", resized)
cv2.waitKey(0)
cv2.destroyAllWindows()

结果:

Original Dimensions : (149, 200, 4)
Resized Dimensions : (149, 440, 4)

Python OpenCV中的resize()函数的使用

指定高和宽

给定高和宽的像数值。

import cv2

img = cv2.imread("./Pictures/python.png")

print('Original Dimensions : ',img.shape)
 
width = 350
height = 450
dim = (width, height)
 
# resize image
resized = cv2.resize(img, dim, interpolation = cv2.INTER_AREA)
 
print('Resized Dimensions : ',resized.shape)
 
cv2.imshow("Resized image", resized)
cv2.waitKey(0)
cv2.destroyAllWindows()

结果:

Original Dimensions : (149, 200, 4)
Resized Dimensions : (450, 350, 4)

Python OpenCV中的resize()函数的使用

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python基于queue和threading实现多线程下载实例
Oct 08 Python
探索Python3.4中新引入的asyncio模块
Apr 08 Python
使用Python的web.py框架实现类似Django的ORM查询的教程
May 02 Python
浅谈Python 多进程默认不能共享全局变量的问题
Jan 11 Python
Golang GBK转UTF-8的例子
Aug 26 Python
Python多线程模块Threading用法示例小结
Nov 09 Python
Django xadmin开启搜索功能的实现
Nov 15 Python
python中的RSA加密与解密实例解析
Nov 18 Python
Python OpenCV视频截取并保存实现代码
Nov 30 Python
python pptx复制指定页的ppt教程
Feb 14 Python
使用python执行shell脚本 并动态传参 及subprocess的使用详解
Mar 06 Python
django inspectdb 操作已有数据库数据的使用步骤
Feb 07 Python
python中的句柄操作的方法示例
Jun 20 #Python
使用python获取(宜宾市地震信息)地震信息
Jun 20 #Python
一篇文章了解Python中常见的序列化操作
Jun 20 #Python
python集合是否可变总结
Jun 20 #Python
Django如何自定义model创建数据库索引的顺序
Jun 20 #Python
pyqt 多窗口之间的相互调用方法
Jun 19 #Python
pyqt5 实现多窗口跳转的方法
Jun 19 #Python
You might like
显示youtube视频缩略图和Vimeo视频缩略图代码分享
2014/02/13 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
2015/12/08 PHP
PHP数组中头部和尾部添加元素的方法(array_unshift,array_push)
2017/04/10 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
2019/10/25 PHP
PHP中abstract(抽象)、final(最终)和static(静态)原理与用法详解
2020/06/05 PHP
让getElementsByName适应IE和firefox的方法
2007/09/24 Javascript
关于Ext中form移除textfield方法:hide(),setVisible(false),remove()
2010/12/02 Javascript
JQuery入门—编写一个简单的JQuery应用案例
2013/01/03 Javascript
jquery的ajax请求全面了解
2013/03/20 Javascript
纯js分页代码(简洁实用)
2013/11/05 Javascript
bootstrap侧边栏圆点导航
2017/01/11 Javascript
JS实现简单拖拽效果
2017/06/21 Javascript
原生JavaScript实现todolist功能
2018/03/02 Javascript
vue实现短信验证码登录功能(流程详解)
2019/12/10 Javascript
vuex入门最详细整理
2020/03/04 Javascript
JavaScript实现字符串与HTML格式相互转换
2020/03/17 Javascript
实例讲解React 组件生命周期
2020/07/08 Javascript
js调用网络摄像头的方法
2020/12/05 Javascript
[00:36]DOTA2勇士令状莱恩声望物品——冥晶之厄展示
2018/05/25 DOTA
Python中生成Epoch的方法
2017/04/26 Python
Python3.6安装及引入Requests库的实现方法
2018/01/24 Python
对python抓取需要登录网站数据的方法详解
2018/05/21 Python
Python列表list排列组合操作示例
2018/12/18 Python
对python 读取线的shp文件实例详解
2018/12/22 Python
python 通过文件夹导入包的操作
2020/06/01 Python
python是怎么被发明的
2020/06/15 Python
美国女士泳装店:Swimsuits For All
2017/03/02 全球购物
澳大利亚波西米亚风连衣裙在线商店:Fortunate One
2019/04/01 全球购物
应届大专毕业生个人自荐信
2013/09/22 职场文书
历史学专业毕业生求职信
2013/09/27 职场文书
校运会入场式解说词
2014/02/10 职场文书
银行简历自我评价
2014/02/11 职场文书
幼儿生日活动方案
2014/08/27 职场文书
公司捐书倡议书
2015/04/27 职场文书
“爱眼护眼,提前预防近视”倡议书3篇
2019/10/30 职场文书
关于JavaScript回调函数的深入理解
2021/06/27 Javascript