我正在参加「掘金·启航计划」
要调整图像大小,请考虑指定的缩放因子,沿每个轴(高度和宽度)缩放图像,或者仅设置所需的高度和宽度。
调整图像大小时:
- 如果您想在调整大小的图像中也保持相同的纵横比,请务必记住图像的原始纵横比(即宽度乘高度)。
- 减小图像的大小需要对像素进行重新采样。
- 增加图像的大小需要重建图像。这意味着您需要插入新像素。
各种插值技术开始发挥作用来完成这些操作。OpenCV 中有多种方法可用,选择通常取决于特定的应用。
这里需要注意的一件重要事情是 OpenCV 输出图像的形状格式,而其他一些图像处理库以宽度、高度的形式给出 **。 **这是有逻辑的。
当使用 OpenCV 读取图像时,它们被表示为 NumPy 数组。一般来说,您总是根据以下形式来引用数组的形状:(行代表其高度,列代表其宽度)。因此,即使使用 OpenCV 读取图像以获得其形状,相同的 NumPy 数组规则也会发挥作用。你得到的形状是
。
调整大小函数语法
让我们首先看一下 OpenCVresize()函数语法。请注意,只需要两个输入参数:
- 源图像。
- 调整后的图像所需的尺寸,
dsize。
我们将在下面的部分中讨论各种输入参数选项。
resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])
src:这是所需的输入图像,它可以是带有输入图像路径的字符串(例如:'test_image.png')。dsize:输出图像所需的尺寸,可以是新的高度和宽度。fx:沿水平轴的比例因子。fy:沿垂直轴的比例因子。interpolation:它为我们提供了调整图像大小的不同方法的选项。
通过指定宽度和高度调整大小
在第一个示例中,我们通过指定新的宽度和高度来调整图像的大小,以缩小图像的尺寸。在下面的代码中:
- 我们将所需的宽度设置为 300,将所需的高度设置为 200。
- 这两个值组合在函数所需的二维向量中
resize()。 - 我们还指定了插值方法,这恰好是默认值。
在上面的Python代码片段中,我们使用该函数定义新的宽度和高度来放大图像**resize()** 。过程和步骤与前面的代码片段类似。
缺点:我们的调整大小操作按预期进行。根据我们定义的新高度和宽度参数,图像会变大或变小。但需要注意的一件事是,通过定义明确的宽度和高度值来调整大小会使生成的图像变形。也就是说,图像的纵横比不会保持不变。
使用缩放因子调整大小
好的,现在我们用缩放因子调整图像的大小。 但在进一步讨论之前,您需要了解缩放因子到底是什么。
缩放因子或比例因子通常是缩放或乘以某个数量的数字,在我们的例子中是图像的宽度和高度。 它有助于保持纵横比完整并保持显示质量。因此,当您放大或缩小图像时,图像不会出现扭曲。****************************
Python
在上面的Python代码片段中:
- 我们沿水平轴和垂直轴定义新的缩放因子。
- 定义缩放因子后就不再需要新的宽度和高度点。因此,我们保留***
dsize为None。*
使用不同的插值方法调整大小
不同的插值方法用于不同的调整大小目的。
INTER_AREA:INTER_AREA使用像素面积关系进行重采样。这最适合减小图像的尺寸(缩小)。当用于放大图像时,它使用该INTER_NEAREST方法。INTER_CUBIC: 这使用双三次插值来调整图像大小。在调整大小和插入新像素时,该方法作用于图像的 4×4 相邻像素。然后,它采用 16 个像素的权重平均值来创建新的插值像素。INTER_LINEAR:这种方法有点类似于INTER_CUBIC插值法。但与 不同的是INTER_CUBIC,它使用 2×2 相邻像素来获得插值像素的加权平均值。INTER_NEAREST:该INTER_NEAREST方法使用最近邻概念进行插值。这是最简单的方法之一,仅使用图像中的一个相邻像素进行插值。
Python
概括
学习了使用自定义高度和宽度来调整图像大小。了解如何使用缩放因子保持纵横比不变,确保调整大小后的图像看起来不会失真。我们还讨论了不同类型的插值方法。