网站首页

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 软件工程 > 后端开发 > Python >

python PIL.Image 如何将图像自带的Alpha透明度去除,

时间:2025-03-03 19:59

人气:

作者:admin

标签:

导读:前言 在训练文生图大模型之前,收集训练数据是很重要的一步, 而在网络上获取的很多图片规格不一,给数据的统一处理和导入带来了不少麻烦。 其中有一种特殊情况,就是图像自带...

前言

在训练文生图大模型之前,收集训练数据是很重要的一步,

而在网络上获取的很多图片规格不一,给数据的统一处理和导入带来了不少麻烦。

其中有一种特殊情况,就是图像自带透明度(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


 

技术之外,欢迎关注我认知成长的公众号 :零度的成长记录

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信