猿问

为什么调整图像大小会导致通道增加?

我有不同尺寸的灰度图像,因此我需要将它们转换为相同尺寸(例如 28*28)以进行实验。我尝试使用不同的方法来做到这一点,我能够做到,但我观察到调整图像大小会导致通道数量增加。我是 python 和图像处理的新手,所以请帮忙。


from PIL import Image


image = Image.open('6.tif')

image = image.resize((28, 28), Image.ANTIALIAS)

image.save('6.png', 'PNG', quality=100)

然后以下代码显示不同的维度:


import imageio


image_data = imageio.imread("6.tif").astype(float)

print(image_data.shape)


image_data = imageio.imread("6.png").astype(float)

print(image_data.shape)

结果是:


(65, 74)

(28, 28, 4)

我不需要最后一个维度。这是怎么来的?即使使用“from resizeimage import resizeimage”,我也得到了类似的结果。


慕标5832272
浏览 353回答 1
1回答

当年话下

你的代码有很多问题...如果您期待灰度图像,请确保这就是您得到的。所以,改变这个:image = Image.open('6.tif')到:image = Image.open('6.tif').convert('L')当您调整图像大小时,您需要使用正确的重采样方法之一:PIL.Image.NEARESTPIL.Image.BOXPIL.Image.BILINEARPIL.Image.HAMMINGPIL.Image.BICUBICPIL.Image.LANCZOS因此,您需要ANTI_ALIAS在这一行用上面列表中的内容替换:image = image.resize((28, 28), Image.ANTIALIAS)当您另存为 PNG 时,它始终是无损的。品质因数与 JPEG 图像的工作方式不同,因此除非您对它如何影响 PNG 编码器有很好的了解,否则您应该忽略它。如果您进行这些更改,特别是第一个更改,我认为您的问题将消失。请记住,PNG 编码器可能会采用 RGB 图像并将其保存为托盘化图像,或者可能采用灰度图像并将其编码为 RGB 或 RGB alpha。
随时随地看视频慕课网APP

相关分类

Python
我要回答