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中copy()方法的使用
May 21 Python
python基础教程之Filter使用方法
Jan 17 Python
Python数据分析之如何利用pandas查询数据示例代码
Sep 01 Python
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
Jan 09 Python
用Python shell简化开发
Aug 08 Python
Python切片操作去除字符串首尾的空格
Apr 22 Python
Django框架组成结构、基本概念与文件功能分析
Jul 30 Python
如何用OpenCV -python3实现视频物体追踪
Dec 04 Python
Python Tkinter图形工具使用方法及实例解析
Jun 15 Python
python中数字是否为可变类型
Jul 08 Python
10行Python代码实现Web自动化管控的示例代码
Aug 14 Python
用python获取txt文件中关键字的数量
Dec 24 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
支持中文的php加密解密类代码
2011/11/27 PHP
PHP递归调用的小技巧讲解
2013/02/19 PHP
Yii2 rbac权限控制之菜单menu实例教程
2016/04/28 PHP
Laravel中间件实现原理详解
2016/10/09 PHP
ThinkPHP框架分布式数据库连接方法详解
2017/03/14 PHP
php生成0~1随机小数的方法(必看)
2017/04/05 PHP
Laravel中的Auth模块详解
2017/08/17 PHP
php面试中关于面向对象的相关问题
2019/02/13 PHP
比较简单实用的使用正则三种版本的js去空格处理方法
2007/11/18 Javascript
JavaScript中跨域调用Flash的方法
2014/08/11 Javascript
jQuery中find()方法用法实例
2015/01/07 Javascript
JavaScript中对象的不同创建方法
2016/08/12 Javascript
AngularJS ng-repeat数组有重复值的解决方法
2016/10/23 Javascript
bootstrap table复杂操作代码
2016/11/01 Javascript
Bootstrap和Java分页实例第一篇
2016/12/23 Javascript
js实现导航栏中英文切换效果
2017/01/16 Javascript
微信小程序 利用css实现遮罩效果实例详解
2017/01/21 Javascript
求js数组的最大值和最小值的四种方法
2017/03/03 Javascript
Node.js 使用request模块下载文件的实例
2018/09/05 Javascript
PyTorch的深度学习入门教程之构建神经网络
2019/06/27 Python
pycharm编写spark程序,导入pyspark包的3中实现方法
2019/08/02 Python
Python 动态导入对象,importlib.import_module()的使用方法
2019/08/28 Python
Python反爬虫伪装浏览器进行爬虫
2020/02/28 Python
一个非常简单好用的Python图形界面库(PysimpleGUI)
2020/12/28 Python
CSS3中的transform属性进行2D和3D变换的基本用法
2016/05/12 HTML / CSS
详解css3中的伪类before和after常见用法
2020/11/17 HTML / CSS
美国瑜伽品牌:Gaiam
2017/10/31 全球购物
Parfumdreams英国:香水和化妆品
2019/05/10 全球购物
应届优秀本科大学毕业生自我鉴定
2014/01/21 职场文书
手机促销活动方案
2014/02/05 职场文书
爱祖国演讲稿
2014/05/04 职场文书
史学专业毕业生求职信
2014/05/09 职场文书
学校党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
伏羲庙导游词
2015/02/09 职场文书
Go 语言下基于Redis分布式锁的实现方式
2021/06/28 Golang
Java中常用解析工具jackson及fastjson的使用
2021/06/28 Java/Android