图片二:matplotlib、PIL、CV2操作图片

  处理图像的方式有三种方式,分别使用PIL, matplotlib, CV2库

1、matplotlib读取和保存图片:

读取通道顺序:RGB

数据类型:numpy.ndarray

数据类型:对于png格式的图片,读取后的数据类型是float32, 0~1之间的小数,对于其他格式的图片,读取后的数据类型是uint8, 0~255

import matplotlib.pyplot as plt

#读取图片,读取通道的顺序是RGB
plt_img = plt.imread('./data/1.jpg')  #uint8

#保存图片
plt.imsave('D:/data/3.png', plt_img) #类型可以是jpg或png

#显示彩色图片(三通道)
plt.imshow(plt_img)

#显示灰度图片(单通道)
plt.imshow(plt_img, cmap='gray')  #如果不加cmap='gray',那么显示的是伪彩色

 

2、PIL读取和保存图片:

读取通道顺序:RGB 

返回的数据类型:PIL,

转成numpy后的像素类型和大小:uint8, 0~255

from PIL import Image
import numpy as np
img_path = './data/1.jpg'  #图片路径

#PIL读取图片
PIL_img = Image.open(img_path) #读取图片,读取通道是RGB,不用转换, 图片是PIL数据类型

#PIL保存图片
PIL_img.save('./data/2.jpg')  #

#将PIL类型转成numpy类型, numpy数组格式(H,W,C=3)
np_img = np.asanyarray(PIL_img)  #将PIL类型转成numpy类型,数据类型是uint8, (H, W, C)


#用PIL显示
PIL_img.show()  

#用matplotlib.pyplot显示
plt.imshow(np_img)   #读取通道是RGB, 不用转换


#将彩色图片转成灰度图片
s=np.array(PIL_img.convert('L'))

3、cv2读取和保存图片: 

读取通道顺序:BRG,

数据类型:numpy.ndarray

像素类型:uint8,  0~255

import cv2
import numpy as np


#cv2读取图片,读取后的类型是numpy类型的数组, 读取的通道顺序是BRG
cv2_img = cv2.imread('./data/1.jpg') #numpy数组,元素类型是uinit8 0~255

#保存图片,第二个是numpy数组或mat数组,类型是jpg或png
cv2.imwrite('D:/data/1.jpg', cv2_img) #


#CV2显示图片,只能用来显示通道顺序为BRG的numpy数组,不然产生色差
cv2.imshow('labels',cv2_img)
cv2.waitKey(0)

#matplotlib.pyplot显示
plt.imshow(cv2_img[:,:,::-1]) #读取通道是BGR,所以[:,:,::-1]将其转换成RGB格式

图片三:numpy制作雪碧图

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

圣诞节不感冒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值