报错的原因是:
png是四通道:RGBA意思是红色,绿色,蓝色,Alpha的色彩空间,Alpha指透明度,位深度是4*8=32(可以通过图片属性来查看)
jpg是三通道:RGB意思是红色,绿色,蓝色,位深度是3*8=24
注意:png格式的不只是文件名后缀是 .png ,也可能是后缀名是 .jpg 但是图片里面的深度是为32的,常规的后缀是 .jpg 格式的图片一般深度是为24的。
解决方案:
我选择的是转换为jpg格式。
第一种转换方式:
from PIL import Image
import os
imageDir='D:/soft/Pycharm/pythonProjectss/pythonProject/dataenhance/picturesets/'
saveDir='D:/soft/Pycharm/pythonProjectss/pythonProject/dataenhance/NEW'(需要先在目录中建好NEW文件夹)
for name in os.listdir(imageDir):
saveName=name
img = Image.open(os.path.join(imageDir, name))
if len(img.split()) == 4:
r, g, b, a = img.split() # 利用split和merge将通道从四个转换为三个
img = Image.merge("RGB", (r, g, b))
img.save(os.path.join(saveDir,saveName))
print('finish')
第二种转换方式:
from PIL import Image
img = Image.open('E:/Apple/train/image/tr_160.jpg')
print(img.mode)
若是四通道则将其改为三通道
from PIL import Image
img = Image.open('E:/Apple/train/image/tr_16.jpg')
print(img.mode)
if img.mode == "RGBA":img = img.convert('RGB')
img.save('E:/Apple/train/image/16.jpg')
结果:图片已经由png转成jpeg格式了