OpenCV 调整图像大小

OpenCV 调整图像大小

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

OpenCV 调整图像大小

调整图像大小意味着改变图像的尺寸,包括宽度、高度或两者。同时,通过调整图像大小可以保持原始图像的宽高比。OpenCV提供了 cv2.resize() 函数来调整图像大小。

语法如下:

cv2.resize(src, dsize[, dst[, fx[,fy[,interpolation]]])

参数:

  • src - 源/输入图像(必选)。
  • dsize - 输出图像的期望大小(必选)
  • fx - 沿水平轴的缩放因子(可选)
  • fy - 沿垂直轴的缩放因子。
  • Interpolation(可选) - 此标志使用以下方法:
    • INTER_NEAREST – 最近邻插值 INTER_AREA – 使用像素区域关系进行重新采样。当我们尝试进行图像放大时,它类似于INTER_NEAREST方法。
    • INTER_CUBIC – 4×4像素邻域上的双三次插值。
    • INTER_LANCOZS4 – 8×8像素邻域上的Lanczos插值。

调整图像大小的示例

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

  1. 保留纵横比(保留图像的高宽比)
  • 缩小图像(减小图像的尺寸)
  • 放大图像(增加图像的尺寸)
    1. 不保留纵横比
  • 仅调整宽度

  • 仅调整高度

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

保留纵横比

  • 用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)

OpenCV 调整图像大小

在上面的示例中,scale_per变量保存图像需要缩放的百分比。 value<100 用于缩小所提供的图像。我们将使用这个 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)

OpenCV 调整图像大小

不保持纵横比

  • 只调整宽度

在下面的示例中,我们为宽度提供了一个特定的像素值,而高度将不受影响。

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)

OpenCV 调整图像大小

  • 调整高度:

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

OpenCV 调整图像大小

调整特定的宽度和高度

  • 我们可以同时指定宽度和高度。
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()

输出:

OpenCV 调整图像大小

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程