gpt4 book ai didi

python - 使用 2D 图像在 Python 中进行 Lanczos 插值

转载 作者:行者123 更新时间:2023-12-02 16:51:42 24 4
gpt4 key购买 nike

我尝试重新缩放 2D 图像(灰度)。图像大小为 256x256,所需输出为 224x224。像素值范围从 0 到 1300。

我尝试了 2 种方法来使用 Lanczos 插值重新缩放它们:

首先使用PIL图像:

import numpy as np
from PIL import Image
import cv2

array = np.random.randint(0, 1300, size=(10, 256, 256))
array[0] = Image.fromarray(array[0]).resize(size=(224, 224), resample=Image.LANCZOS)

导致错误信息:ValueError: image has wrong mode

然后是 CV2:

array[0] = cv2.resize(array[0], dsize=(224, 224), interpolation=cv2.INTER_LANCZOS4)

导致错误消息:ValueError:无法将输入数组从形状 (224,224) 广播到形状 (256,256)

如何正确地做到这一点?

最佳答案

在第二种情况下,您要将 256x256 图像的大小调整为 224x224,然后将其分配回原始数组的一部分。这个切片的大小仍然是 256x256,所以 NumPy 不知道如何进行数据复制。

相反,创建一个大小合适的新输出数组:

array = np.random.randint(0, 1300, size=(10, 256, 256))
newarray = np.zeros((10, 224, 224))
newarray[0] = cv2.resize(array[0], dsize=(224, 224), interpolation=cv2.INTER_LANCZOS4)

关于python - 使用 2D 图像在 Python 中进行 Lanczos 插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60416856/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com