Python技术迷

OpenCV教程-OpenCV调整图像大小

整理:python技术迷

有时,转换加载的图像是必要的。在图像处理中,我们需要调整图像的大小以执行特定操作。图像通常存储在Numpy ndarray(数组)中。使用 ndarray.shape 可以获取图像的维度。我们可以通过使用维度变量的索引位置获取每个像素的宽度、高度和通道数。

示例:1

import cv2  img = cv2.imread(r'C:\Users\DEVANSH SHARMA\cat.jpeg', 1)  scale = 60  width = int(img.shape[1] * scale / 100)  height = int(img.shape[0] * scale / 100)  dim = (width, height)  # resize image  resized = cv2.resize(img, dim, interpolation=cv2.INTER_AREA)  print('Resized Dimensions : ', resized.shape)  cv2.imshow("Resized image", resized)  cv2.waitKey(0)  cv2.destroyAllWindows()
输出:
Resized Dimensions : (199, 300, 3)

Image

调整图像的大小意味着更改图像的维度,即其宽度或高度以及两者。调整图像大小也可以保留原始图像的纵横比。OpenCV提供 cv2.resize() 函数来调整图像的大小。其语法如下:
cv2.resize(src, dsize[, dst[, fx[,fy[,interpolation]]])

参数:

  • src - 输入图像(必需)。

  • dsize - 输出图像的期望大小(必需)。

  • fx - 沿水平轴的比例因子(可选)。

  • fy - 沿垂直轴的比例因子。

  • 插值(可选)-此标志使用以下方法:

    • INTER_NEAREST - 最近邻插值 INTER_AREA - 使用像素面积关系重新采样。当我们尝试进行图像缩放时,它类似于INTER_NEAREST方法。

    • INTER_CUBIC - 在4×4像素邻域上的双三次插值。

    • INTER_LANCOZS4 - 在8×8像素邻域上的Lanczos插值。

专属福利 

👉点击领取:最全Python资料合集

调整图像大小的示例

有多种方法可以调整图像的大小。以下是执行调整操作的一些示例:

1.保留纵横比(保持图像的高宽比)

  • 缩小(减小图像的大小)

  • 放大(增加图像的大小)

2.不保留纵横比

  • 仅调整宽度

  • 仅调整高度

3.调整指定的宽度和高度

保留纵横比

  • 使用 resize() 进行缩小
import cv2  img = cv2.imread(r'C:\Users\DEVANSH SHARMA\cat.jpeg', 1)  print('Original Dimensions : ', img.shape)  scale = 60  # percent of original size  width = int(img.shape[1] * scale / 100)  height = int(img.shape[0] * scale / 100)  dim = (width, height)  # resize image  resized = cv2.resize(img, dim, interpolation=cv2.INTER_AREA)  print('Resized Dimensions : ', resized.shape)  cv2.imshow("Resized image", resized)  cv2.waitKey(0)  cv2.destroyAllWindows()
输出:
Original Dimensions :  (332, 500, 3)Resized Dimensions :  (199, 300, 3)

Image

在上面的示例中,scale_per 变量保存了需要缩放的图像百分比。使用此值与原始图像的维度一起,计算输出图像的宽度和高度。

  • 使用 resize() 进行放大
import cv2  img = cv2.imread(r'C:\Users\DEVANSH SHARMA\cat.jpeg', 1)  print('Original Dimensions : ', img.shape)  scale = 150  # percent of original size  width = int(img.shape[1] * scale / 100)  height = int(img.shape[0] * scale / 100)  dim = (width, height)  # resize image  resized = cv2.resize(img, dim, interpolation=cv2.INTER_AREA)  print('Resized Dimensions : ', resized.shape)  cv2.imshow("Resized image", resized)  cv2.waitKey(0)  cv2.destroyAllWindows()
输出:
Original Dimensions :  (332, 500, 3)Resized Dimensions :  (398, 600, 3)

Image

不保留纵横比

  • 仅调整宽度

在下面的示例中,我们为宽度提供了特定的像素值,高度将保持不变。
import cv2  img = cv2.imread(r'C:\Users\DEVANSH SHARMA\cat.jpeg', cv2.IMREAD_UNCHANGED)  print('Original Dimensions : ', img.shape)  width = img.shape[1]  # keep original width  height = 440   dim = (width, height)  # resize image  resized = cv2.resize(img, dim, interpolation=cv2.INTER_AREA)  print('Resized Dimensions : ', resized.shape)  cv2.imshow("Resized image", resized)  cv2.waitKey(0)  cv2.destroyAllWindows()
输出:
Original Dimensions :  (332, 500, 3)Resized Dimensions :  (440, 500, 3)

Image

  • 仅调整高度

在下面的示例中,scale_per 变量保存了需要缩放高度的百分比,或者我们可以为高度提供特定的像素值。
import cv2  img = cv2.imread(r'C:\Users\DEVANSH SHARMA\cat.jpeg', 1)  print('Original Dimensions : ', img.shape)  width = img.shape[1]  # keep original width  height = 200  dim = (width, height)  # resize image  resized = cv2.resize(img, dim, interpolation=cv2.INTER_AREA)  print('Resized Dimensions : ', resized.shape)  cv2.imshow("Resized image", resized)  cv2.waitKey(0)  cv2.destroyAllWindows()
输出:
Original Dimensions :  (332, 500, 3)Resized Dimensions :  (200, 500, 3)

Image

  • 调整指定的宽度和高度

我们可以指定宽度和高度。
import cv2  img = cv2.imread(r'C:\Users\DEVANSH SHARMA\cat.jpeg', 1)  print('Original Dimensions : ', img.shape)  width = 350  height = 450  dim = (width, height)  # resize image  resized = cv2.resize(img, dim, interpolation=cv2.INTER_AREA)  print('Resized Dimensions : ', resized.shape)  cv2.imshow("Resized image", resized)  cv2.waitKey(0)  cv2.destroyAllWindows()

输出:

Image

Image
 1

Image

热门推荐

Image