我有不同尺寸的灰度图像,因此我需要将它们转换为相同尺寸(例如 28*28)以进行实验。我尝试使用不同的方法来做到这一点,我能够做到,但我观察到调整图像大小会导致通道数量增加。我是 python 和图像处理的新手,所以请帮忙。from PIL import Imageimage = Image.open('6.tif')image = image.resize((28, 28), Image.ANTIALIAS)image.save('6.png', 'PNG', quality=100)然后以下代码显示不同的维度:import imageioimage_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”,我也得到了类似的结果。
1 回答

当年话下
TA贡献1890条经验 获得超9个赞
你的代码有很多问题...
如果您期待灰度图像,请确保这就是您得到的。所以,改变这个:
image = Image.open('6.tif')
到:
image = Image.open('6.tif').convert('L')
当您调整图像大小时,您需要使用正确的重采样方法之一:
PIL.Image.NEAREST
PIL.Image.BOX
PIL.Image.BILINEAR
PIL.Image.HAMMING
PIL.Image.BICUBIC
PIL.Image.LANCZOS
因此,您需要ANTI_ALIAS
在这一行用上面列表中的内容替换:
image = image.resize((28, 28), Image.ANTIALIAS)
当您另存为 PNG 时,它始终是无损的。品质因数与 JPEG 图像的工作方式不同,因此除非您对它如何影响 PNG 编码器有很好的了解,否则您应该忽略它。
如果您进行这些更改,特别是第一个更改,我认为您的问题将消失。请记住,PNG 编码器可能会采用 RGB 图像并将其保存为托盘化图像,或者可能采用灰度图像并将其编码为 RGB 或 RGB alpha。
添加回答
举报
0/150
提交
取消