python PIL.Image 如何将图像自带的Alpha透明度去除,例如将'RGBA'转为'RGB'
前言
在训练文生图大模型之前,收集训练数据是很重要的一步,
而在网络上获取的很多图片规格不一,给数据的统一处理和导入带来了不少麻烦。
其中有一种特殊情况,就是图像自带透明度(Alpha),通常在文件信息中就会有显示,比如下面这张图:
在这种情况下,如果直接用cv2或PIL将它转化为"RGB"模式,会导致得到的图片是纯黑色的。
解决办法
如果是由于透明度导致,那么解决的直接思路就是给整张图片加一块同等大小的白色背景,
这里用到的函数为:
PIL.Image.alpha_composite()
在批量处理图片时,还需要加上判断该图片是否包含透明度的逻辑,
代码如下:
from PIL import Image import os from os.path import join as ospj src_dir = '' dst_dir = '' for f in os.listdir(src_dir): src_path = ospj(src_dir, f) dst_path = ospj(dst_dir, f) if f.endswith('DS_Store'): continue else: img = img = Image.open(src_path) # 查看图片是否包含透明度 if img.mode in ('RGBA', 'LA') or (img.mode == 'P' and 'transparency' in img.info): # 准备一张同等尺寸的白色背景 background = Image.new('RGBA', img.size, (255, 255, 255)) # 复合原图与背景图 alpha_composite = Image.alpha_composite(background, img) # 将复合后的图片转为"RGB"模式并保存 alpha_composite = alpha_composite.convert('RGB') alpha_composite.save(dst_path) else: img.save(dst_path)
The End
技术之外,欢迎关注我认知成长的公众号 :零度的成长记录
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架