简介
opencv库当中的resize函数可以帮助我们快速进行图像的大小变化,在此我记录一下我的学习心得,并且提出自己的问题,希望大家可以参考和阅读。
resize函数
cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) → dst
参数说明
src :源图像
dst :目标图像。当参数dsize不为0时,dst的大小为dsize的大小;否则,它的大小需要根据src的大小以及参数fx和fy决定。另外,dst的类型和src图像相同。
dsize :目标图像大小。当dsize为0时,它可以通过以下公式计算得出:
请注意,参数dsize和参数(fx, fy)不能够同时为0
fx :水平轴上的比例因子。当它为0时,计算公式如下:
fy :垂直轴上的比例因子。当它为0时,计算公式如下:
interpolation :(说实话我感觉这几个差不多)
Interpolation 方法:
- INTER_NEAREST:最近邻插值法
- INTER_LINEAR:双线性插值法(默认)
- INTER_AREA:基于局部像素的重采样。对于图像抽取来说,这可能是一个更好的方法。但如果是放大图像时,它和最近邻法的效果类似。
- INTER_CUBIC:基于4x4像素邻域的3次插值法
- INTER_LANCZOS4:基于8x8像素邻域的Lanczos插值
代码示例
第一种(使用参数dsize)
import cv2
img = cv2.imread('image1.jpg') #读图
print(img.shape) #输出为(450,600,3)(高,宽,通道数)
height,width = img.shape[:2] #获取原图像的水平方向尺寸和垂直方向尺寸。
res = cv2.resize(img,(width//2,height//2),interpolation=cv2.INTER_CUBIC) #dsize=(2*width,2*height)
cv2.imshow('res',res)
cv2.imwrite('output.jpg',res)
#cv2.destroyWindow('res')
#销毁指定窗口
第二种(使用参数fx,fy)
import cv2
img = cv2.imread('image1.jpg')#读图
height,width = img.shape[:2] #获取原图像的水平方向尺寸和垂直方向尺寸。
res = cv2.resize(img,None,fx=2,fy=2,interpolation=cv2.INTER_CUBIC)
#比例因子:fx=2,fy=2
cv2.imshow('res',res)
cv2.imwrite('output2.jpg',res)
#cv2.destroyWindow('res')
#销毁指定窗口
另:附上官方文档截图