图片缩放cv2.resize()详解

1 函数cv2.resize()的参数

resize(src, dsize, dst=None, fx=None, fy=None, interpolation=None)

参数解释

参数解释
src输入原图像
dsize输出图像的大小,方式:(宽,高)
fxwidth方向的缩放比例
fyheight方向的缩放比例
interpolation插值方式,默认为双线性插值

scr、dsize是必传参数,fx、fy、interpolation是可选参数。

2 interpolation参数解释

图片进行缩放,需要对像素进行重新计算,interpolation参数便是决定缩放图像时计算像素的方式,常见的方式以下五种:

参数算法数值
INTER_NEAREST最邻近插值0
INTER_LINEAR双线性插值 (默认)1
INTER_CUBIC4x4像素邻域内的双立方插值2
INTER_AREA使用像素区域关系进行重采样3
INTER_LANCZOS48x8像素邻域内的Lanczos插值4

还有其他的选择:

INTER_BITS2 = 10
INTER_LINEAR_EXACT = 5
INTER_MAX = 7
INTER_NEAREST_EXACT = 6
INTER_TAB_SIZE = 32
INTER_TAB_SIZE2 = 1024

3 代码演示

import cv2

image = cv2.imread('./flower.jpg', 1)
h, w, _ = image.shape

image_f = cv2.resize(image, (0, 0), fx=2, fy=1)

image0 = cv2.resize(image, (w * 2, h * 2), interpolation=cv2.INTER_NEAREST)
image1 = cv2.resize(image, (w * 2, h * 2), interpolation=cv2.INTER_LINEAR)
image2 = cv2.resize(image, (w * 2, h * 2), interpolation=cv2.INTER_CUBIC)
image3 = cv2.resize(image, (w * 2, h * 2), interpolation=cv2.INTER_AREA)
image4 = cv2.resize(image, (w * 2, h * 2), interpolation=cv2.INTER_LANCZOS4)
image5 = cv2.resize(image, (w * 2, h * 2), interpolation=cv2.INTER_BITS)
image10 = cv2.resize(image, (w * 2, h * 2), interpolation=cv2.INTER_BITS2)

cv2.imshow('image', image)
cv2.imshow('image_f', image_f)
cv2.imshow('image0', image0)
cv2.imshow('image1', image1)
cv2.imshow('image2', image2)
cv2.imshow('image3', image3)
cv2.imshow('image4', image4)
cv2.imshow('image5', image5)
cv2.imshow('image10', image10)
cv2.waitKey(0)

4 效果

image
在这里插入图片描述
image_f
在这里插入图片描述
image0
在这里插入图片描述

image1
在这里插入图片描述
image2
在这里插入图片描述
image3
在这里插入图片描述

image4在这里插入图片描述
image5
在这里插入图片描述
image10
在这里插入图片描述

5 总结

通过图形的效果看来,cv2.INTER_CUBIC、cv2.INTER_LANCZOS4和cv2.INTER_BITS2效果比较好,优于双线性插值cv2.INTER_LINEAR,但是双线性插值速度更佳,如果要缩小图片可以考虑cv2.INTER_LINEAR。

image_f这张图是才是fx和fy,如果不想手动计算图片,则dsize直接置为(0, 0),在大多数时候还是使用dsize而不用fx和fy。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值