Python主流图像库读写图片方式总结

做图像视觉算法这一块经常会遇到读写图像的时候,现在读写图片的主流图像库有opencv,Pillow.Image,matplotlib.image,scipy.misc(已弃用),image.IO, skimage等,这些库读写图片的方式有些不太一样,光靠记很容易混淆,所以我写了此篇总结;另外还有其他深度学习框架也有读取图片的接口,但它们底层都是调用这些库,出入不大。
在实验之前先展示一下代码用到的示例图片(从网上下载的):
在这里插入图片描述
图片详细信息如下:
在这里插入图片描述

opencv:cv2.imread()

opencv是图像处理常用的工具库,非常强大,里面集成的算法非常多。

图片读取操作

在这里插入图片描述
在这里插入图片描述
可以看到opencv读进来是一个多维numpy矩阵,彩色图片维度是(高度,宽度,通道数)。数据类型是uint8。
在这里插入图片描述
在这里插入图片描述
以灰度图的方式读进来的矩阵格式是(高度,宽度)
如果图片路径是错误的,读出来的数据是None,不会报错
在这里插入图片描述

图片矩阵操作

opencv读入图片的矩阵格式是:(height,width,channels),而在深度学习中,pytorch会把图片通道数放在前面,比如(channels,height,width)。为了应对该要求,我们可以这么做
在这里插入图片描述
当需要对图片扩展一个维度,比如:(batch,channels,height,width),可以这样做
在这里插入图片描述

图片归一化

有时候训练也需要将图片做归一化处理,可以这样做
在这里插入图片描述

保存图片

在这里插入图片描述

访问像素

在这里插入图片描述

截取ROI区域

在这里插入图片描述
在这里插入图片描述

通道分离与合并

在这里插入图片描述

PIL: PIL.Image.open()

PIL即Python Imaging Library,也即为我们所称的Pillow,是一个很流行的图像库,它比opencv更为轻巧,常用于深度学习框架底层读取图片操作。

图片读写

在这里插入图片描述
在这里插入图片描述
可以看到,通过PIL.Image模块读取图片,返回的是一个Image类,而不是一个ndarray,要写显示图片,还需要将它转换成ndarray才行。
灰度图方式读取
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

保存图片

在这里插入图片描述

通道分离与合并

在这里插入图片描述

获取ROI区域

在这里插入图片描述
在这里插入图片描述

matplotlib:matplotlib.image.imread()

matplotlib,我主要用来绘图,用法和matlab很像,但它也可以读图片哦
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

imageio.imread()

在这里插入图片描述
在这里插入图片描述

skimage: skimage.io.imread()

在这里插入图片描述
在这里插入图片描述
可以看到图像也是以ndarray方式读入
灰度图方式读入如下:
在这里插入图片描述
可以看到,灰度图像的矩阵的值被归一化了,注意!!!
也可以以这种方式获得灰度图:
在这里插入图片描述

总结

  1. 除opencv读入的彩色图片以BGR顺序以外,其他均以RGB顺序存储。
  2. 除开PIL.Image模块读入的图片是image类以为,其他都是ndarray方式存储。
  3. skimage.io.imread()方式读入灰度图会被归一化。
  4. 无论用什么库读进图片,只要把图片改为ndarray矩阵形式,那么matplotlib就可以显示。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值