一、PIL

分不清PILPillow,于是简单整理一下二者区别;

PIL全称是:Python Imaging Library。

PIL是一个强大的、方便的python图像处理库,功能非常强大,曾经一度被认为是python平台事实上的图像处理标准库,不过Python 2.7以后不再支持。

PIL官方网站:

http://pythonware.com/products/pil/

二、Pillow

Pillow是基于PIL模块fork的一个派生分支,但如今已经发展成为比PIL本身更具活力的图像处理库。

pillow

Pillow友好支持python3,目前pypi上最新版本是Pillow 7.2.0

Pillow官方文档地址:

https://pillow.readthedocs.io/en/stable/

python3安装pillow:

pip install Pillow

tip:PillowPIL不能在同一个环境中共存。在安装Pillow之前,请先卸载PIL.

简单使用Pillow

# 从Pillow导入Image模块
from PIL import Image

# 打开图片bride.jpg
im = Image.open("bride.jpg")

# 显示图片
im.rotate(45).show()

  正是这里的from PIL,可能会让很多新人疑惑。虽然是pillow,但是导入包的写法依然是from PIL

Image只是pillow众多模块之一。其他模块以及对应文档参照官网:https://pillow.readthedocs.io/en/stable/reference/index.html

 

读取图片函数:

cv2.imread()

Image.open()

注意:Image.open()函数只是保持了图像被读取的状态,但是图像的真实数据并未被读取,因此如果对需要操作图像每个元素,如输出某个像素的RGB值等,需要执行对象的load()方法读取数据

Image.open()读取的通道顺序是RGB,cv2.imread()读取的通道顺序为BGR。

PIL函数读取图片的时候,结合np.array()使用。

注意:

PIL.Image.save()直接保存RGB的图片

cv2.imwirte()保存图片的时候相当于做了BGR2RGB再去保存



显示的区别

cv2.imshow()采用BGR模式

plt.imshow() 采用RGB模式

img.show() 采用RGB模式

PIL.Image转Opencv

cv2_img = cv2.cvtColor(numpy.asarray(Img_img),cv2.COLOR_RGB2BGR)

Opencv转PIL.Image

pil_img = Image.fromarray(cv2.cvtColor(cv_img,cv2.COLOR_BGR2RGB))



有人做实验发现:PIL读取出来的图片转为numpy格式和直接使用cv读取的图片在像素点上并不是完全一致。



除了上述两种读取图片的方式以外,python还支持以下方式读取图片:

(1)from matplotlib.image import imread

img = imread(img_path) # 返回 ndarray

(2)from http://skimage.io import imread

img = imread(file_path) # 返回的是 ndarray

  

原文地址:http://www.cnblogs.com/Li-JT/p/16838192.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性