首页IT科技cannot open source input file(OSError: cannot write mode RGBA as JPEG解决办法)

cannot open source input file(OSError: cannot write mode RGBA as JPEG解决办法)

时间2025-04-29 17:29:01分类IT科技浏览8232
导读:OSError: cannot write mode RGBA as JPEG...

OSError: cannot write mode RGBA as JPEG

当用labelme标注图片时                ,打开存放图片的文件夹                        ,出现闪退        ,控制台出现以下报错:

这是因为你的图像是rgba四个通道的            ,第四个通道是透明通道                。

错误原因主要是因为png格式和jpg格式图片的通道数不同                        。

png是四通道:RGBA意思是红色                        ,绿色            ,蓝色        ,Alpha的色彩空间                        ,Alpha指透明度 jpg是三通道:RGB意思是红色                ,绿色    ,蓝色

所以                        ,png格式图片要保存成jpg格式就要丢弃A通道                    ,反之不可以        。

png格式的不只是文件名后缀是 .png ,也可能是后缀名是 .jpg 但是图片里面的深度是为32的                    ,常规的后缀是 .jpg 格式的图片一般深度是为24的            。

如何查看你的图片是几通道的? 1. 直接查看图片属性                        ,如果图片位深度是24则说明是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打标打到一半闪退出错                ,这是因为那张图片有问题                        ,因为我们用了PIL模块        ,对于PIL模块来说            ,其模式包括以下几种:

1        1位像素                        ,黑和白            ,存成8位的像素

L        8位像素        ,黑白

P        8位像素                        ,使用调色板映射到任何其他模式

RGB       3×8位像素                ,真彩

RGBA       4×8位像素    ,真彩+透明通道

CMYK       4×8位像素                        ,颜色隔离

YCbCr       3×8位像素                    ,彩色视频格式

I          32位整型像素

F         32位浮点型像素

参考:

https://blog.csdn.net/qiuzitao/article/details/108325150

https://blog.csdn.net/tp_0moyi0/article/details/120993213

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
Day100可以表示第100天吗(day10-1-中文乱码处理) java实体类为什么要实现序列化操作(Java实体类为什么需要序列化和反序列化)