Python-OpenCV中的resize()函数
改变图像大小意味着改变尺寸,无论是单独的高或宽,还是两者。也可以按比例调整图像大小。
这里将介绍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)(高度,宽度,通道数)的原始图像:

 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)

调节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)

指定高和宽
给定高和宽的像数值。
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)

参考链接:
- https://docs.opencv.org/master/da/d54/group__imgproc__transform.html#ga5bb5a1fea74ea38e1a5445ca803ff121
 - https://medium.com/@manivannan_data/resize-image-using-opencv-python-d2cdbbc480f0
 - https://www.tutorialkart.com/opencv/python/opencv-python-resize-image/
 
Python-OpenCV中的resize()函数的更多相关文章
- OpenCV中的绘图函数-OpenCV步步精深
		
OpenCV 中的绘图函数 画线 首先要为画的线创造出环境,就要生成一个空的黑底图像 img=np.zeros((512,512,3), np.uint8) 这是黑色的底,我们的画布,我把窗口名叫做i ...
 - 转载 为什么print在Python 3中变成了函数?
		
转载自编程派http://codingpy.com/article/why-print-became-a-function-in-python-3/ 原作者:Brett Cannon 原文链接:htt ...
 - cv2.cornerHarris()详解 python+OpenCV 中的 Harris 角点检测
		
参考文献----------OpenCV-Python-Toturial-中文版.pdf 参考博客----------http://www.bubuko.com/infodetail-2498014. ...
 - 嵌入Python系列 | 调用Python模块中无参数函数
		
开发环境 Python版本:3.6.4 (32-bit) 编辑器:Visual Studio Code C++环境:Visual Studio 2013 需求说明 在用VS2013编写的Win32程序 ...
 - python+opencv中最近出现的一些变化( OpenCV 官方的 Python tutorial目前好像还没有改过来?)  记一次全景图像的拼接
		
最近在学习过程中发现opencv有了很多变动, OpenCV 官方的 Python tutorial目前好像还没有改过来,导致大家在学习上面都出现了一些问题,现在做一个小小的罗列,希望对大家有用 做的 ...
 - python列表中的pop函数
		
再python的列表中,有许多的内置方法,而在这里我主要向大家介绍一下pop函数. pop函数主要是用于删除列表中的数据.而其删除值时会返回删除的值.如果没有参数传入时, 则会默认认为删除列表的最后一 ...
 - OpenCV中的新函数connectedComponentsWithStats使用
		
主要内容:对比新旧函数,用于过滤原始图像中轮廓分析后较小的区域,留下较大区域. 关键字 :connectedComponentsWithStats 在以前,常用的方法是"是先调用 cv ...
 - python 类中的某个函数作为装饰器
		
在python的类中,制作一个装饰器的函数, class A: def wrapper(func): ###装饰器 def wrapped(self,*arg,**kwargs) ... return ...
 - 5、opencv中的绘图函数
		
1.目标 a.学习使用 OpenCV 绘制不同几何图形 b. 你将会学习到这些函数: cv2.line(), cv2.circle(), cv2.rectangle(),cv2.ellipse(),c ...
 
随机推荐
- LayUI 子父窗体的交互
			
---恢复内容开始--- 收到的工作是将一个ERP的窗体程序改为网页实现,所以就肯定需要弹框来选择(如:物料编码.部门.业务员等等) 本文采取的前段框架是LayUI. layUI的官网API网址:ht ...
 - Unity T4M 中文讲解
			
http://blog.csdn.net/tianmao111/article/details/46482963 现在在u3d圈里流行了一种地形转换器(或者叫编辑器吧),但是经查阅之后,似乎还没有中文 ...
 - 蓝桥杯T126(xjb&大数开方)
			
题目链接:http://lx.lanqiao.cn/problem.page?gpid=T126 题意:中文题诶- 思路:显然被翻转了奇数次的硬币为反面朝上,但是本题的数据量很大,所以O(n^2)枚举 ...
 - SpringBoot(1)—启动原理之SpringApplication对象的创建
			
创建SpringApplication对象 SpringBoot版本为 2.1.1.RELEASE @SpringBootApplication public class SpringbootDemo ...
 - php高并发之opcache
			
今天工作的时候接触到客户的一台服务器,业务逻辑比较简单 .估算pv在120w左右吧,用的是阿里云2c4g的服务器.一大早就开始卡顿了,登陆服务器后查看负载到了八九十. 之后就想办法调整一下吧.突然想起 ...
 - Java 多线程高并发编程 笔记(一)
			
本篇文章主要是总结Java多线程/高并发编程的知识点,由浅入深,仅作自己的学习笔记,部分侵删. 一 . 基础知识点 1. 进程于线程的概念 2.线程创建的两种方式 注:public void run( ...
 - php:一个题目,关于优先级,及$a++和$a=$a+1,
			
这几天常看到微博上转发的一条微博:就做了下,竟做错了,所以就试着分析了下~~ 这是微博: 这是代码: <?php $c = 3; $b = 6; if ($c = 4 || $b = 4) { ...
 - yii2.0下,JqPaginator与Pjax实现无刷新翻页
			
控制器部分 <?php namespace backend\controllers; use common\models\Common; use Yii; use yii\base\Contro ...
 - 线程池(2)Executors.newFixedThreadPool
			
例子: ExecutorService es = Executors.newFixedThreadPool(5); try { for (int i = 0; i < 20; i++) { Ru ...
 - PHP是.NET上的一门开发语言
			
.NET Core 已经实现了PHP JIT,现在PHP是.NET上的一门开发语言 12月23日,由开源中国联合中国电子技术标准化研究院主办的2017源创会年终盛典在北京万豪酒店顺利举行.在本次大 ...