我有不同尺寸的灰度图像,因此在进行实验时需要将它们转换为相同尺寸(例如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”,我也得到类似的结果。
答案 0 :(得分:1)
您的代码有很多问题...
如果您希望获得灰度图像,请确保得到的是灰度图像。因此,请更改此内容:
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 alpha。