PIL和pillow,opencv库的区别

 

一、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

1
2
3
4
5
6
7
8
# 从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

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
读取图片函数:
 
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还支持以下方式读取图片:
 
1from matplotlib.image import imread
 
img = imread(img_path) # 返回 ndarray
 
2from http://skimage.io import imread
 
img = imread(file_path) # 返回的是 ndarray

  

posted on   lmqljt  阅读(1541)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示