本文主要是介绍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 pltfigure1 = 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 pltimage1 = np.random.random(size=(100,100,4))
image1[:,:,3]=0.2plt.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 pltimage1 = 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,对应了之前保存的格式
这篇关于Matplotlib图像读取和输出及jpg、png格式对比,及透明通道alpha设置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!