2 图像基础知识¶
学习目标¶
- 知道像素、通道等概念
- 掌握使用matplotlib加载图片方法
我们在进行图像任务时,需要了解图像的基础知识。图像是由像素点组成的,每个像素点的值范围为: [0, 255], 像素值越大意味着较亮。比如一张 200x200 的图像, 则是由 40000 个像素点组成, 如果每个像素点都是 0 的话, 意味着这是一张全黑的图像.
我们看到的彩色图一般都是多通道的图像, 所谓多通道可以理解为图像由多个不同的图像层叠加而成, 例如我们看到的彩色图像一般都是由 RGB 三个通道组成的,还有一些图像具有 RGBA 四个通道,最后一个通道为透明通道,该值越小,则图像越透明。
1. 像素和通道的理解¶
接下来,我们使用 matplotlib 库来实际理解下上面讲解的图像知识。
示例代码:
import numpy as np
import matplotlib.pyplot as plt
# 1. 图像基本理解
def test01():
img = np.zeros([200, 200])
print(img)
plt.imshow(img, cmap='gray', vmin=0, vmax=255)
plt.show()
img = np.full([255, 255], 255)
print(img)
plt.imshow(img, cmap='gray', vmin=0, vmax=255)
plt.show()
# 2. 图像的通道
def test02():
img = plt.imread('data/彩色图片.png')
# 修改数据的维度
img = np.transpose(img, [2, 0, 1])
# 打印所有通道
for channel in img:
print(channel)
plt.imshow(channel)
plt.show()
# 修改透明度
img[3] = 0.05
img = np.transpose(img, [1, 2, 0])
plt.imshow(img)
plt.show()
if __name__ == '__main__':
test01()
test02()
程序输出结果:
2. 小节¶
在本小节我们了解了图像的像素、通道相关概念。图像是由像素点组成的,像素值的范围 [0, 255] 值越小表示亮度越小,值越大,表名亮度值越大。一个全0的图像就是一副全黑图像。 一个复杂的图像则是由多个通道组合在一起形成的。