OpenCV-Python图像的缩放

xiaohai 2023-07-05 16:44:46 2401人围观 标签: Opencv 
简介调整图像大小意味着改变它的尺寸,无论是宽度、高度还是两者都改变​​。此外,原始图像的纵横比可以保留在调整大小的图像中。为了调整图像大小,OpenCV 提供了 resize() 函数。

图片的缩放包含了两层意思:缩小和放大。那么OpenCV提供了resize函数:

def resize(src: UMat, dsize: cv2.typing.Size | None, dst: UMat | None = ..., fx: float = ..., fy: float = ..., interpolation: int = ...) -> UMat: ...

参数说明:

参数 描述
src 【必需】原图像
dsize 【必需】输出图像所需大小
fx 【可选】沿水平轴的比例因子
fy 【可选】沿垂直轴的比例因子
interpolation 【可选】插值方式

其中插值方式有很多种:

cv.INTER_NEAREST 最近邻插值
cv.INTER_LINEAR 双线性插值
cv.INTER_CUBIC 双线性插值
cv.INTER_AREA 使用像素区域关系重新采样。它可能是图像抽取的首选方法,因为它可以提供无莫尔条纹的结果。但是当图像被缩放时,它类似于INTER_NEAREST方法。

通常的,缩小使用cv.INTER_AREA,放缩使用cv.INTER_CUBIC(较慢)和cv.INTER_LINEAR(较快效果也不错)。默认情况下,所有的放缩都使用cv.INTER_LINEAR。

一、指定尺寸进行缩放

指定dsize参数

import cv2

img1 = cv2.imread("./1-1.jpg", cv2.IMREAD_UNCHANGED)

img2 = cv2.resize(img1, (250, 250)) #缩小
img3 = cv2.resize(img1, (700, 700)) #放大

cv2.imshow("img-1", img1)
cv2.imshow("img-2", img2)
cv2.imshow("img-3", img3)

cv2.waitKey(0)
cv2.destroyAllWindows()

图片alt

二、宽高等比缩放

dsize参数需要设成None,再设置fx和fy

import cv2

img1 = cv2.imread("./1-1.jpg", cv2.IMREAD_UNCHANGED)

img2 = cv2.resize(img1, None, fx=0.5, fy=0.5) # 缩小0.5倍
img3 = cv2.resize(img1, None, fx=1.5, fy=1.5) # 放大1.5倍

cv2.imshow("img-1", img1)
cv2.imshow("img-2", img2)
cv2.imshow("img-3", img3)

cv2.waitKey(0)
cv2.destroyAllWindows()

图片alt

要进行图片缩放,要么设置dsize参数,要么设置fx和fy参数,但是设置fx和fy参数时需要将dsize设置成None.