(详解)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插值

你可能感兴趣的:(python,opencv)