1.函数介绍
cv2.resize(InputArray src, OutputArray dst, Size, fx, fy, interpolation)
2.参数意思
- InputArray src : 输入图片
- OutputArray dst :输出图片
- Size : 输出图片尺寸
- fx, fy:沿x轴,y轴的缩放系数(也就是宽和高)
- interpolation : 插入方式
3.插入方式选择
- INTER_NEAREST :最近邻插值
最近邻插值法的优点:计算量很小,算法也简单,因此运算速度较快。没考虑其他相邻像素点的影响。缺点:图像质量损失较大,会产生明显的马赛克和锯齿现象。 - INTER_LINEAR:双线性插值(默认设置)
细节比最近邻插值更好,但是速度没有它快,复杂度更高,因此具有低通滤波器的性质, 从而导致缩放后图像的高频分量受到损失, 图像边缘在一定程度上变得较为模糊。产生图像质量受损与计算精度不高的问题。 - INTER_AREA:使用像素区域关系进行重采样。
- INTER_CUBIC:4x4像素邻域的双三次插值
细节上比双线性插值法更好,是商业图像中的标准方法。双三次插值考虑的是周围16个像素的像素值,其权重因子的计算比较复杂。 - INTER_LANCZOS4:8x8像素邻域的Lanczos插值
4.实际代码
import cv2
inputpath='D:/pycharm/4kinds_detectface_module/1.jpg'
img=cv2.imread(inputpath)
h, w = img.shape[:2]
img1 = cv2.resize(img, None,None,fx=0.25, fy=0.25, interpolation=cv2.INTER_CUBIC) #
img2=cv2.resize(img,(200,300),interpolation=cv2.INTER_CUBIC)
print(img.shape)
print(img1.shape)
print(img2.shape)
cv2.imshow('image',img)
cv2.imshow('image1',img1)
cv2.imshow('image2',img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
运行结果: