图像像素值
图像像素值一般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,对应了之前保存的格式