使用 PIL 将 PNG 图像转换为 JPG 图像时出现问题

问题描述 投票:0回答:1

我正在使用 Pytorch 处理 X 射线图像来构建神经网络。经过一番摸索,我发现我的主要问题是图像的初始加载。 例如,我从这张图片开始:

当我尝试使用 ImageFolder 和 DataLoader 加载它时,它显示为:

查看之后,我意识到是 PIL.show() 导致了问题(以及内部 PNG-JPG 转换),但对于我的一生,我无法让它工作。我尝试过 PIL 的 .convert() 方法,但没有成功,以及将 alpha 蒙版复制到背景上的步骤(如here所示),我也尝试将背景颜色更改为黑色,但什么也没有,一切都只是降级到白盒子里。我也在文件中的其他 X 射线上尝试过,结果相同。

当我尝试使用 PNGtoJPG.com 转换图像时,我得到了这个图像:,但 FreeConverter.com 工作正常。

我知道它一定是具有原始图像透明度的东西,但在这一点上,我已经尝试了我能找到的一切,但一无所获。

作为参考,这是我一直在测试的转换代码:

png = Image.open("0001_1297860395_01_WRI-L1_M014.png") #with the correct file path
    png.load()
    alpha = png.split()[-1]
    alpha= alpha.convert('RGBA')
    background = Image.new("RGB", png.size, (0, 0, 0))
    background.paste(png, alpha)
    background.save('./foo3.jpg', 'JPEG', quality=80)

使用 cv2 时图像加载良好,但由于我需要使用自定义转换,因此该方法需要转换为 cv2。

任何帮助将不胜感激,我很茫然!

python pytorch python-imaging-library jpeg rgba
1个回答
0
投票

单独的图像转换可以通过使用来处理

png.point(lambda x: x / 256)
这在此处记录:https://github.com/python-pillow/Pillow/issues/6765,其中显示 PIL 对 PNG 存在问题。然而,它不通过神经网络进行的问题仍然是一个问题,但更适合另一个问题。

© www.soinside.com 2019 - 2024. All rights reserved.