我有不同尺寸的灰度图像,所以我需要将它们转换为相同的尺寸(比如,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)
我不需要在最后一个维度。这是怎么来的?我得到了类似的结果,即使“从resizeimage进口resizeimage”。
有许多与你的代码的问题...
如果你期待一个灰度图像,确保是你会得到什么。因此,改变这种:
image = Image.open('6.tif')
至:
image = Image.open('6.tif').convert('L')
当您调整图像大小,你需要使用的正确的重采样方法之一:
所以,你需要从在这条线上面的列表中的东西来代替ANTI_ALIAS
:
image = image.resize((28, 28), Image.ANTIALIAS)
当你保存为PNG,它始终是无损耗的。品质因数不起作用一样的JPEG图像,所以你应该忽略它,除非你有它如何影响PNG编码器有很好的理解。
如果你做这些改变,特别是第一,我认为你的问题就会迎刃而解。请注意,尽管该PNG编码器可以采用RGB图像,并将其保存为托盘化图像,或者它可以采取灰度图像和编码它作为RGB,RGB或阿尔法。