一、resize概述
图像处理中经常需要对图像进行缩放,而OpenCV提供了resize函数来实现这样的功能。resize函数是OpenCV中最常用的函数之一,它可以对图像进行线性插值缩放,也可以对图像进行平移、旋转等变换。
OpenCV中resize的原型如下:
void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR );
其中,src和dst分别是输入和输出图像,dsize是输出图像的尺寸,fx和fy是水平和竖直方向的缩放系数,interpolation是插值方法,OpenCV中支持的插值方法有INTER_NEAREST(最近邻插值)、INTER_LINEAR(双线性插值)、INTER_CUBIC(双三次插值)、INTER_AREA(面积插值)、INTER_LANCZOS4(Lanczos插值)。
二、resize实现缩放
resize可以实现图像的缩小和放大。如果要对图像进行缩小,可以使用缩小系数fx和fy,也可以通过dsize指定输出图像的尺寸,这时fx和fy需要为0。如果要对图像进行放大,应该使用放大系数fx和fy,这样可以保持图像的长宽比。在实际应用中,缩小系数一般为小于1的小数,放大系数则为大于1的整数。
下面是一个对图像进行缩放的示例代码,以缩小为例:
import cv2 img = cv2.imread('lena.jpg') resized = cv2.resize(img, (256, 256), interpolation=cv2.INTER_LINEAR) cv2.imshow('resized', resized) cv2.waitKey(0) cv2.destroyAllWindows()
以上代码实现了对lena.jpg图像的缩小,将输出图像的尺寸指定为256x256,插值方法为双线性插值。