图像数据的预处理,从'P','RGBA','RGB'多种mode的图像说起

‘P’,’RGBA’,’RGB’这是PIL Image读图可能出现的三种mode,每种mode的图片数据都有不同的组织形式,当训练/测试数据都是一堆图片时,尤其是那种没人帮你清洗的数据时,自己就要留神了,否则模型还没跑起来就给提前自己挖了个坑。

首先,先容许我吐槽一下OpenCV的两个抽风,我用的python接口的(估计没怎么维护吧,所以有bug),用cv2.imread读图:

对’RGBA’图的抽风

‘RGBA’的图像,按照文档所述:
这里写图片描述

我把flag置为-1,然而读出来的还是3通道的(alpha通道不见了),置成0,1倒是确实是RGB和Grayscale。

对’P’图的抽风

对于mode为’P’的图,制作本来就有点生僻。用cv2.imread去读的话,读不出来,怎么读都是NoneType。


然而,这两个OpenCV的抽风问题在PIL这里就不存在了,感觉还是PIL大法好,不管图像是什么mode,都能原汁原味地读出来。

而且,幸运的是,可以很简单的把’RGBA’和’P’ mode的图像转换成’RGB’图:

# 假如lena是'RGBA'图
lena_RGBA =Image.open("D:\\Code\\Python\\test\\img\\lena.jpg")  
lena_RGBA_rgb= lena_RGBA.convert("RGB")  

# 假如lena是'P'图
lena_P =Image.open("D:\\Code\\Python\\test\\img\\lena.jpg")  
lena_P_rgb= lena_P.convert("RGB")  

这样一来,就都成了RGB图,图像模式的坑就填掉了,可以愉快地做后续处理了~

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值