python - Numpy 调整大小/重新缩放图像

标签 python image numpy scipy resize

我想拍摄一张图像并更改图像的比例,而它是一个 numpy 数组。

例如,我有一张可口可乐瓶的图片: bottle-1

这转换为形状 (528, 203, 3) 的 numpy 数组,我想调整它的大小以说明第二张图像的大小: bottle-2

形状为 (140, 54, 3)

如何在保持原始图像不变的情况下将图像的大小更改为特定形状?其他答案建议剥离每隔一行或第三行,但我想要做的基本上是通过图像编辑器但在 python 代码中缩小图像。在 numpy/SciPy 中是否有任何库可以做到这一点?

最佳答案

是的,你可以安装 opencv(这是一个用于图像处理和计算机视觉的库),然后使用 cv2.resize功能。例如使用:

import cv2
import numpy as np

img = cv2.imread('your_image.jpg')
res = <b>cv2.resize(img, dsize=(54, 140), interpolation=cv2.INTER_CUBIC)</b>

这里 img 是一个包含原始图像的 numpy 数组,而 res 是一个包含 resized 图像的 numpy 数组。 interpolation 参数是一个重要方面:调整图像大小的方法有多种。特别是因为您缩小了图像,并且原始图像的大小不是调整后图像大小的倍数。可能的插值模式是:

  • INTER_NEAREST - a nearest-neighbor interpolation
  • INTER_LINEAR - a bilinear interpolation (used by default)
  • INTER_AREA - resampling using pixel area relation. It may be a preferred method for image decimation, as it gives moire’-free results. But when the image is zoomed, it is similar to the INTER_NEAREST method.
  • INTER_CUBIC - a bicubic interpolation over 4x4 pixel neighborhood
  • INTER_LANCZOS4 - a Lanczos interpolation over 8x8 pixel neighborhood

与大多数选项一样,没有“最佳”选项,因为对于每个调整大小的架构,都存在一种策略优于另一种策略的情况。

关于python - Numpy 调整大小/重新缩放图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48121916/

相关文章:

python - 检索与嵌套字典中最小值对应的键

python - 如何指定 scikit-learn 的高斯过程回归的先验?

image - 根据二进制裁剪图像 - Matlab

algorithm - 找到两张图像之间差异的边界框?

python - 矩阵和向量之间的numpy广播?

python - 使用 MongoDB 列表中的日期字段作为 Pandas DataFrame 中的 DatetimeIndex

python - pandas 动态列数的平均值

python - 使用部分下载 (HTTP) 下载文件

html - XHTML 和 CSS : Can't seem to fit 3 images in one horizontal list?

python - 使用 numpy 将 csv 加载到二维矩阵中以进行绘图