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利用多进程将大量数据放入有限内存的教程
Apr 01 Python
python通过定义一个类实例作为ftp回调方法
May 04 Python
Linux下将Python的Django项目部署到Apache服务器
Dec 24 Python
Python信息抽取之乱码解决办法
Jun 29 Python
Django中反向生成models.py的实例讲解
May 30 Python
Python实现Event回调机制的方法
Feb 13 Python
django框架自定义模板标签(template tag)操作示例
Jun 24 Python
Python Threading 线程/互斥锁/死锁/GIL锁
Jul 21 Python
Python求解正态分布置信区间教程
Nov 20 Python
解决redis与Python交互取出来的是bytes类型的问题
Jul 16 Python
python 偷懒技巧——使用 keyboard 录制键盘事件
Sep 21 Python
Python爬虫教程知识点总结
Oct 19 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数组内存耗用太多问题的解决方法
2010/04/05 PHP
Zend Framework教程之Bootstrap类用法概述
2016/03/14 PHP
PHP调用存储过程返回值不一致问题的解决方法分析
2016/04/26 PHP
web的各种前端打印方法之jquery打印插件jqprint实现网页打印
2013/01/09 Javascript
在表单提交前进行验证的几种方式整理
2013/07/31 Javascript
js正则表达式验证邮件地址
2015/11/12 Javascript
JavaScript基础教程——入门必看篇
2016/05/20 Javascript
sea.js常用的api简易文档
2016/11/15 Javascript
iscroll-probe实现下拉刷新和下拉加载效果
2017/06/28 Javascript
浅谈Vue父子组件和非父子组件传值问题
2017/08/22 Javascript
提升页面加载速度的插件InstantClick
2017/09/12 Javascript
JS获取一个表单字段中多条数据并转化为json格式
2017/10/17 Javascript
微信小程序自定义yPicker组件实现省市区三级联动功能
2020/10/29 Javascript
linux服务器快速卸载安装node环境(简单上手)
2021/02/22 Javascript
[09:13]2014DOTA2国际邀请赛 中国区预选赛coser表演
2014/05/23 DOTA
[56:21]LGD vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python程序设计入门(5)类的使用简介
2014/06/16 Python
Python中正则表达式的用法实例汇总
2014/08/18 Python
Python实现把utf-8格式的文件转换成gbk格式的文件
2015/01/22 Python
Python实现将HTML转换成doc格式文件的方法示例
2017/11/20 Python
python删除服务器文件代码示例
2018/02/09 Python
对python xlrd读取datetime类型数据的方法详解
2018/12/26 Python
python调用并链接MATLAB脚本详解
2019/07/05 Python
Python 异步协程函数原理及实例详解
2019/11/13 Python
HTML5拍照和摄像机功能实战详解
2019/01/24 HTML / CSS
乌克兰在线药房:Аптека24
2019/10/30 全球购物
资生堂英国官网:Shiseido英国
2020/12/30 全球购物
会计电算化专业个人的自我评价
2013/11/24 职场文书
优秀的计算机专业求职信范文
2013/12/27 职场文书
党建工作先进材料
2014/05/02 职场文书
史学专业毕业生求职信
2014/05/09 职场文书
担保书格式
2015/01/20 职场文书
2015年行政执法工作总结
2015/05/23 职场文书
Python基础之常用库常用方法整理
2021/04/30 Python
vue+iview实现手机号分段输入框
2022/03/25 Vue.js
PHP 时间处理类Carbon
2022/05/20 PHP