在 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_NEAREST
,INTER_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 中实现大小调整。应当注意,该方法是基本的大小调整功能,独立于任何库,并且不会执行插值,抗锯齿,如上述方法一样。
以下代码演示了此函数。
import matplotlib.pyplot as plt
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)
]
im = plt.imread("filename.jpeg")
res = scale(im, 30, 30)
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