OpenCV的cv2.resize()函数用于缩放图像,其基本格式如下。
dst=cv2.resize(src,dsize[,dst[,fx[,fy[,interpolation]]]])
参数说明如下。
dst表示转换后的图像。
src表示用于缩放的原图像。
dsize表示转换后的图像大小。
fx表示水平方向的缩放比例。
fy表示垂直方向的缩放比例。
interpolation表示插值方式。在转换过程中,可能存在一些不能通过转换算法确定值的像素,插值方式决定了如何获得这些像素的值。可用的插值方式如下。
cv2.INTER_NEAREST:最近邻插值。
cv2.INTER_LINEAR:双线性插值,默认方式。
cv2.INTER_CUBIC:3次样条插值。
cv2.INTER_AREA:区域插值。
cv2.INTER_LANCZOS4:Lanczos插值。
cv2.INTER_LINEAR_EXACT:位精确双线性插值。
cv2.INTER_MAX:插值编码掩码。
cv2.WARP_FILL_OUTLIERS:标志,填充目标图像中的所有像素。
cv2.WARP_INVERSE_MAP:标志,逆变换。
cv2.resize()函数在转换图像时,目标图像的类型和大小与转换之前dst表示的图像无关。目标图像的类型与src表示的原图像一致,其大小可通过参数dsize、fx和fy来确定。
当dsize参数不为None时,不管是否设置参数fx和fy,都由dsize来确定目标图像的大小。dsize是一个二元组,其格式为“(width,height)”,width表示目标图像的宽度,height表示目标图像的高度。
当dsize参数为None时,参数fx和fy不能设置为0。此时,目标图像的宽度为“round(原图像的宽度×fx)”,目标图像的高度为“round(原图像的高度×fy)”。
示例代码如下。
缩放图像
import cv2
img=cv2.imread('bee.jpg') #读取图像
sc=[1,0.2,0.5,1.5,2] #设置缩放比例
cv2.imshow('showimg',img) #显示图像
while True:
key=cv2.waitKey()
if 48<=key<=52: #按键【0】【1】【2】【3】或【4】
x=y=sc[key-48] #获得缩放比例
img2=cv2.resize(img,None,fx=x,fy=y) #缩放图像
cv2.imshow('showimg',img2) #显示图像