我正在尝试使用PIL
调整存储为NumPy数组的图像的大小。但它似乎也使不同频道的颜色正常化,这是我不想要的
如果我打印原始图像和修改后的图像的min()
、mean()
、max()
,我会得到以下结果:
0 139.3552607574856 255
0 92.91526075748563 235
0 62.96987110846718 207
0 116.63458655562165 255
0 162.5862423160817 255
0 189.97112433075552 255
因此,生成的图像看起来像原始的蓝色油漆
以下是我用于调整大小的代码:
def resize(img, shape):
pil_img = np2pil(img)
pil_img = pil_img.resize((shape[1], shape[0]))
np_img = pil2np(pil_img)
return np_img
def np2pil(img):
return Image.fromarray((img * 255).astype('uint8'))
def pil2np(img):
np_img = np.asarray(img)
if np_img.max() <= 1:
return (np_img * 255).astype(int)
else:
return np_img
图书馆版本:
numpy==1.19.0
Pillow==7.2.0
根据您的输出,我假设原始输入图像已经是
np.uint8
类型!?如果是这样,为什么要与255
相乘,并在np2pil
中键入cast tonp.uint8
?整体创建整数溢出(这解释了颜色的变化);实际调整大小与该问题无关如果我相应地更正
np2pil
一切都很好。对于某些图像,我得到以下“before”和“after”
min()
、mean()
、max()
值:由于调整大小过程中涉及的插值,可能会出现细微差异
相关问题 更多 >
编程相关推荐