有时,转换加载的图像是必要的。在图像处理中,我们需要调整图像的大小以执行特定操作。图像通常存储在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)

5-1.png

调整图像的大小意味着更改图像的维度,即其宽度或高度以及两者。调整图像大小也可以保留原始图像的纵横比。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插值。

调整图像大小的示例

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

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)

5-2.png

在上面的示例中,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)

5-3.png

不保留纵横比

  • 仅调整宽度

在下面的示例中,我们为宽度提供了特定的像素值,高度将保持不变。

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)

5-4.png

  • 仅调整高度

在下面的示例中,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)

5-5.png

  • 调整指定的宽度和高度

我们可以指定宽度和高度。

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()  

输出:

5-6.png

标签: OpenCV, OpenCV教程, OpenCV图像识别, OpenCV安装教程, OpenCV下载, OpenCV入门, OpenCV基础, OpenCV库, OpenCV学习, OpenCV指南, OpenCV教程中文版, OpenCV快速入门, OpenCV基础教程