Matplotlib图像读取和输出及jpg、png格式对比,及透明通道alpha设置

图像像素值

图像像素值一般size为3,也就是通道数,分别代表R,G,B,如果只有单一 一个值则表示灰度值,也就是说一张二维图片,当长和宽都为1080时,那么若是灰度图像,图像尺寸为(1080,1080,1)若是RGB图像则为(1080,1080,3),

jpg、png图像格式

jpg图像的灰度值范围和RGB范围为[0,255],数值类型为uint8,也就是无符号整数

png图像的灰度值范围和RGB范围在正常的[0,255]范围外,可以取[0,1],数值类型为float,在图像保存的时候会自动映射回[0,255]

jpg图像为有损压缩,在保存时可能会丢失图像细节

png图像为无损压缩

jpg不带有alpha透明通道

png带有alpha透明通道,也就是在传统rgb通道后还有一个alpha通道数

例如原来的例子中rgb图像的形状为(1080,1080,3),带有alpha通道就为(1080,1080,4)

plt.imshow()

plt.imshow()的参数为图像的像素矩阵,作用为将像素值输出为图像

import numpy as np
import matplotlib.pyplot as plt


figure1 = plt.figure()
image1 = np.random.random(size=(100, 100, 3))
plt.imshow(image1)
figure1.savefig('plot1.png')
plt.show()

figure2 = plt.figure()
image2 = np.random.randint(0,255,size=(100, 100, 3))
figure2.savefig('plot2.jpg')
plt.imshow(image2)
plt.show()

这里分别初始化了两个像素矩阵,但是数值类型不同,分别为整形和浮点型

plot1

plot2

保存带有alpha透明通道的png图像

import numpy as np
import matplotlib.pyplot as plt


image1 = np.random.random(size=(100,100,4))
image1[:,:,3]=0.2

plt.imshow(image1)
plt.savefig('transparent.png')
plt.show()

 

上述代码中的透明通道统一设置为了0.2,通明通道的取值范围为[0,1],值越小越透明,关于alpha值设置的详细配置信息可以参考我的另一篇博客Matplotlib颜色透明度设置-CSDN博客 

plt.imread()

plt.imread()的作用是读取本地图片并返回ndarray格式的数组,参数为图片路径

import numpy as np
import matplotlib.pyplot as plt


image1 = plt.imread('plot1.png')
image2 = plt.imread('plot2.jpg')

print(type(image1),image1.dtype)
print(type(image2),image2.dtype)

# <class 'numpy.ndarray'> float32
# <class 'numpy.ndarray'> uint8

 可以看到读取出来的数值类型为float和uint,对应了之前保存的格式

  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值