OSError: cannot write mode RGBA as JPEG
當(dāng)用labelme標(biāo)注圖片時(shí),打開(kāi)存放圖片的文件夾,出現(xiàn)閃退,控制臺(tái)出現(xiàn)以下報(bào)錯(cuò):
這是因?yàn)槟愕膱D像是rgba四個(gè)通道的,第四個(gè)通道是透明通道。
錯(cuò)誤原因主要是因?yàn)閜ng格式和jpg格式圖片的通道數(shù)不同。
- png是四通道:RGBA意思是紅色,綠色,藍(lán)色,Alpha的色彩空間,Alpha指透明度
- jpg是三通道:RGB意思是紅色,綠色,藍(lán)色
所以,png格式圖片要保存成jpg格式就要丟棄A通道,反之不可以。
png格式的不只是文件名后綴是 .png ,也可能是后綴名是 .jpg 但是圖片里面的深度是為32的,常規(guī)的后綴是 .jpg 格式的圖片一般深度是為24的。
如何查看你的圖片是幾通道的?
1. 直接查看圖片屬性,如果圖片位深度是24則說(shuō)明是3通道,如果圖片位深度是32則是4通道的。
2. 用代碼查看:
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')
拓展:labelme打標(biāo)打到一半閃退出錯(cuò),這是因?yàn)槟菑垐D片有問(wèn)題,因?yàn)槲覀冇昧薖IL模塊,對(duì)于PIL模塊來(lái)說(shuō),其模式包括以下幾種:
1 1位像素,黑和白,存成8位的像素
L 8位像素,黑白
P 8位像素,使用調(diào)色板映射到任何其他模式
RGB 3×8位像素,真彩
RGBA 4×8位像素,真彩+透明通道
CMYK 4×8位像素,顏色隔離
YCbCr 3×8位像素,彩色視頻格式
I 32位整型像素
F 32位浮點(diǎn)型像素文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-802773.html
參考:
https://blog.csdn.net/qiuzitao/article/details/108325150
https://blog.csdn.net/tp_0moyi0/article/details/120993213文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-802773.html
到了這里,關(guān)于OSError: cannot write mode RGBA as JPEG解決辦法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!