Python 中各种imread函数的区别与联系
最近一直在用python做图像处理相关的东西,被各种imread函数搞得很头疼,因此今天决定将这些imread总结一下,以免以后因此犯些愚蠢的错误。如果你正好也对此感到困惑可以看下这篇总结。当然,要了解具体的细节,还是应该 read the fuck code和API document,但貌似python的很多模块文档都不是很全,所以只能多看代码和注释了。
先来看看常用的读取图片的方式:
PIL.Image.open
scipy.misc.imread
scipy.ndimage.imread
cv2.imread
matplotlib.image.imread
skimge
caffe.io.load_iamge
知乎上有篇帖子专门介绍了这些方法的性能Python的各种imread函数在实现方式和读取速度上有何区别?
这些方法可以分为四大家族
PIL
PIL.Image.open + numpy
scipy.misc.imread
scipy.ndimage.imread
这些方法都是通过调用PIL.Image.open 读取图像的信息;
PIL.Image.open 不直接返回numpy对象,可以用numpy提供的函数进行转换,参考Image和Ndarray互相转换;
其他模块都直接返回numpy.ndarray对象,通道顺序为RGB,通道值得默认范围为0-255。
matplotlib
matplot.image.imread
从名字中可以看出这个模块是具有