码迷,mamicode.com
首页 > 其他好文 > 详细

matplotlib、PIL、cv2图像操作差异分析

时间:2019-01-16 18:08:04      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:show   imwrite   write   spl   图像处理   数组   自己   title   save   

python进行图像处理中分别用到过matplotlib.pyplot、PIL、cv2三种库,这三种库图像读取和保存方法各异,并且图像读取时顺序也有差异,如plt.imread和PIL.Image.open读入的都是RGB顺序,而cv2.imread读入的是BGR顺序。使用时需要倍加注意。

现参考http://www.jianshu.com/p/3977d674da85。对这三种库图像读取保存进行梳理。与原参考资源有一定差异。当前使用为python3.5版本。

读取图像

1.matplotlib.pyplot

matplotlib读取进来的图片是unit8,0-255范围。

2.PIL.image.open

PIL是有自己的数据结构的,但是可以转换成numpy数组,转换后的数组为unit8,0-255

3.cv2.imread

opencv读进来的是numpy数组,类型是uint8,0-255。

4.plt.imread和PIL.Image.open读入的都是RGB顺序,而cv2.imread读入的是BGR顺序。使用时需要倍加注意。

显示图像

均用plt.imshow(img):因为opencv读取进来的是bgr顺序呢的,而imshow需要的是rgb顺序,因此需要先反过来plt.imshow(img[..., -1::-1])。

保存图像

1 PIL.image - 保存PIL格式的图片

img.save("1.jpg")

2.cv2.imwrite - 保存numpy格式的图片

cv2.imwrite("1.jpg")

 

OpenCV读取的图片从BGR转换为RGB

import cv2

img=cv2.imread(‘imagename’)

方法一

b,g,r=cv2.split(img)

img2=cv2.merge([r.g.b])

方法二

img2=img[: , : , : : -1]

 

- 显示
b,g,r = cv2.split(img)
img_rgb = cv2.merge([r,g,b])
plt.figure()
plt.imshow(img_rgb)
plt.show()

matplotlib、PIL、cv2图像操作差异分析

标签:show   imwrite   write   spl   图像处理   数组   自己   title   save   

原文地址:https://www.cnblogs.com/ranjiewen/p/10278234.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!