在 Python 中调整图像大小

Manav Narula 2023年1月30日 2021年4月29日
  1. 在 Python 中使用 opencv 模块来调整图像大小
  2. 在 Python 中使用 scikit-image 模块调整图像大小
  3. 在 Python 中创建用户定义的函数以调整图像大小
在 Python 中调整图像大小

在本教程中,我们将讨论如何调整图像大小。

本质上,我们将调整代表图像的 numpy 数组的大小。numpy 模块中没有直接功能可以实现此目的。我们不能直接使用 resize() 函数,因为它忽略了轴并且不应用插值或外推。

请注意,调整大小后,我们可以导出此调整大小的数组并将其另存为图像。这是下面讨论的所有方法的共同点

在 Python 中使用 opencv 模块来调整图像大小

OpenCV 模块广泛用于 Python 中的图像处理和计算机视觉。要调整图像大小,我们将首先使用 imread() 函数读取图像,然后使用 resize() 函数调整图像大小,如下所示。

import cv2
import numpy as np

img = cv2.imread('filename.jpeg')
res = cv2.resize(img, dsize=(54, 140), interpolation=cv2.INTER_CUBIC)

imread() 返回一个存储图像的数组。我们使用 resize() 函数调整它的大小。这里的一个重要方面是 interpolation 参数,该参数实际上告诉如何调整图像的大小。调整图像大小的方法有多种,例如 INTER_NEARESTINTER_LINEAR 等。没有选择此参数的最佳方法。情况因情况而异。

在 Python 中使用 scikit-image 模块调整图像大小

该模块基于 numpy 库构建,并具有 resize() 函数,可以有效地调整图像大小。它可以在各种通道上工作,同时可以处理插值,抗锯齿等问题。

以下代码显示了如何使用此函数。

from skimage.transform import resize
import matplotlib.pyplot as plt

im = plt.imread('filename.jpeg')
res = resize(im, (140, 54))

请注意,我们使用 matplotlib.pyplot.imread() 函数以上述方法读取图像。可以用你喜欢的任何方法代替它。

在 Python 中创建用户定义的函数以调整图像大小

我们还可以创建自己的函数以在 Python 中实现大小调整。应当注意,该方法是基本的大小调整功能,独立于任何库,并且不会执行插值,抗锯齿,如上述方法一样。

以下代码演示了此函数。

def scale(im, nR, nC):
    number_rows = len(im)     # source number of rows 
    number_columns = len(im[0])  # source number of columns 
    return [[ im[int(number_rows * r / nR)][int(number_columns * c / nC)]  
                 for c in range(nC)] for r in range(nR)]

import matplotlib.pyplot as plt

im = plt.imread('filename.jpeg')
res = scale(im, 30, 30)
Author: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

相关文章 - Python Image