我尝试重新缩放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: could not broadcast input array from shape (224,224) into shape (256,256)
如何正确做?

最佳答案

在第二种情况下,您将256x256图像的大小调整为224x224,然后将其分配回原始数组的一部分。该 slice 的大小仍为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)

10-06 13:54
查看更多