我想拍摄一张图像并更改图像的比例,而它是一个 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 interpolationINTER_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 theINTER_NEAREST
method.INTER_CUBIC
- a bicubic interpolation over 4x4 pixel neighborhoodINTER_LANCZOS4
- a Lanczos interpolation over 8x8 pixel neighborhood
与大多数选项一样,没有“最佳”选项,因为对于每个调整大小的架构,都存在一种策略优于另一种策略的情况。
关于python - Numpy 调整大小/重新缩放图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48121916/