如何使用Python在OpenCV中调整图像大小?


OpenCV 提供了函数 cv2.resize() 来调整图像大小。在OpenCV中,调整大小被称为缩放。我们可以通过指定图像大小或缩放因子来调整图像大小。当我们指定缩放因子时,纵横比会得到保留。

cv2.resize() 函数使用了不同的插值方法:

  • cv2.INTER_AREA - 用于缩小图像。

  • cv2.INTER_CUBIC - 速度较慢,用于放大。

  • cv2.INTER_LINEAR - 用于放大。它是所有调整大小目的的默认值。

步骤

您可以使用以下步骤来调整图像大小:

导入所需的库。在以下所有Python示例中,所需的Python库是OpenCVMatplotlib。请确保您已经安装了它们。

import cv2
import matplotlib.pyplot as plt

使用cv2.imread()函数读取图像。使用图像类型(.jpg或.png)指定完整的图像路径。

img = cv2.imread('birds.jpg')

传递new_size缩放因子fx和fy以及插值来调整图像大小。fxfy分别是宽度和高度的缩放因子。

resize_img = cv2.resize(img, new_size)
resize_img = cv2.resize(img,(0, 0),fx=0.5, fy=0.7, interpolation = cv2.INTER_AREA)

显示调整大小后的图像。

plt.imshow(resize_img)

让我们借助一些Python示例来了解不同的图像大小调整选项。

在以下示例中,我们将使用此图像作为输入文件

示例1

在下面的Python程序中,我们将输入图像调整为new_size = 450, 340)。这里宽度=450,高度=340

import cv2 import matplotlib.pyplot as plt img = cv2.imread('birds.jpg') h, w, c = img.shape print(f"Height and width of original image: {h}, {w}" ) # resize the image new_size = (450, 340) # new_size=(width, height) print(f"New height and width: {new_size[1]}, {new_size[0]}" ) resize_img = cv2.resize(img, new_size) # Convert the images from BGR to RGB img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) resize_img = cv2.cvtColor(resize_img, cv2.COLOR_BGR2RGB) plt.subplot(121),plt.imshow(img), plt.title("Original Image") plt.subplot(122), plt.imshow(resize_img), plt.title("Resized Image") plt.show()

输出

运行上述程序后,将产生以下输出:

Height and width of original image: 465, 700 
New height and width of original image: 340, 450

并且它将显示以下输出窗口,显示原始图像和调整大小后的图像。

示例2

在下面的Python程序中,我们将使用不同的缩放因子和插值来调整输入图像的大小。

# import the required libraries import cv2 import matplotlib.pyplot as plt # read the input image img = cv2.imread('birds.jpg') # resize the image using different interpolations resize_cubic = cv2.resize(img,(0, 0),fx=2, fy=2, interpolation = cv2.INTER_CUBIC) resize_area = cv2.resize(img,(0, 0),fx=0.5, fy=0.7, interpolation = cv2.INTER_AREA) resize_linear = cv2.resize(img,(0, 0),fx=2, fy=2, interpolation = cv2.INTER_LINEAR) # display the original and resized images plt.subplot(221),plt.imshow(img), plt.title("Original Image") plt.subplot(222), plt.imshow(resize_cubic), plt.title("Interpolation Cubic") plt.subplot(223), plt.imshow(resize_area), plt.title("Interpolation Area") plt.subplot(224), plt.imshow(resize_linear), plt.title("Interpolation Linear") plt.show()

输出

运行上述程序后,将产生以下输出:

更新于:2022年9月27日

11K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告