(详解)opencv里的cv2.resize改变图片大小Python
Posted 果粒在哪里
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(详解)opencv里的cv2.resize改变图片大小Python相关的知识,希望对你有一定的参考价值。
cv2.resize函数结构:
image = cv2.resize(src, dsize, dst=None, fx=None, fy=None, interpolation=None)
功能:
cv2.resize函数将图像src的大小调整为指定大小。
cv2.resize函数详解:
src:源图像
dst:目标图像。dst图像与src图像的类型相同。
dsize:目标图像的大小。当dsize不是(0,0)时,输出图像(image)的大小为dsize的大小。
例如:
img = cv2.imread('02.png')
shape = img.shape
print(shape) # (467, 892, 3)
img_2 = cv2.resize(img, dsize=(500, 500), dst=None, fx=2, fy=2, interpolation=cv2.INTER_NEAREST)
print(img_2.shape) # (500, 500, 3)
这个时候不论fx、fy等于多少,输出图片的大小都是(500,500)
当dsize是(0,0)时或dsize=None,输出图像(image)的大小可以通过如下式子计算:
dsize = Size(round(fx*src.cols), round(fy*src.rows))
例如:
img = cv2.imread('02.png')
shape = img.shape
print(shape) # (467, 892, 3)
img_2 = cv2.resize(img, dsize=None, dst=None, fx=2, fy=1, interpolation=cv2.INTER_NEAREST)
print(img_2.shape) # (467, 1784, 3)
fx :水平轴上的比例因子。即是图像的行的大小乘以2,这里为892*2=1784
fy :竖直轴上的比例因子。即是图像的列的大小乘以2,这里为467*1=467
print(shape)输出的大小(467,892),其中467表示图像的高,即图像的列,892表示图像的宽,即图像的行。
特别注意:参数dsize和参数fx,、fy不能够同时为0
Interpolation:插值方法
- INTER_LINEAR:双线性插值法(默认)
- INTER_NEAREST:最近邻插值法
- INTER_AREA:像素局部区域进行重采样
- INTER_CUBIC:4x4像素邻域的三次插值
- INTER_LANCZOS4:8x8像素邻域的Lanczos插值
以上是关于(详解)opencv里的cv2.resize改变图片大小Python的主要内容,如果未能解决你的问题,请参考以下文章