python 使用PIL读取tif格式图片后,使用np.array 讲PIL Image 转换为数组失败,仍然返回PIL 类型的Image

项目场景:

在做一个关于cv深度学习的模型训练,在自己电脑上实现的时候是使用PIL库读和处理tiff图片,由于训练需要,在朋友电脑上配置环境,部署代码,迁移时出现问题


问题描述:

在做数据增广的使用,需要使用torchvision,其中torchvision中的transform是以PIL格式的图片交互的,因此代码是通过Image.open("****.tif")读入,然后使用np.array(img)以数组形式进行自定义增广。

跑通之后在朋友的电脑上安装相同版本的pillow和相同版本的numpy,发现使用np.array(PIL.image)后,返回的依然时PIL class Image,说明np.array 对此其无效


原因分析:

其实---没有分析出来为什么处理无效,但是处理png.jpg格式图片的时候,就没有这样的现象,可能还是因为tiff图片的原因吧


解决方案:

使用opencv对tiff图片进行读入,读入后的类型就是numpy ndarray,之后可以再通过PIL 完成从numpy数组到PIL image 的转换,但是要注意opencv读取图片,红绿蓝三通道的顺序是蓝绿红!!非常的反人类,在这个坑里陷入一晚上!!

参考代码如下

#使用opencv读入tif图片
path='\**\**.tif'
img=cv2.imread(path)

#使用PIL讲ndarray转换为PIL类型的image(要注意由于三原色通道读取顺序不一样,因此应该将数组进行通道顺序转换!!!)
pil_img=PIL.Image.fromarray(cv2.cvtColor(img,cv2.COLOR_BGR2RGB)

 

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值