深度学习入门之python图像模式(修改数组数据)

一、查看图像模式

根据原论文《EyeTracking for everyone》,其中iTracker的网络输入有一个faceGrid,这个人脸掩模表征了头部在图像中的位置和大小信息。GazeCapture数据集中也准备好了这样的face mask图片。
可以通过下面的程序,查看该样本的图像数据以及模式等信息:

// 加载npz文件
path='C:/Users/Lenovo/Desktop/eye_tracker_train_and_val.npz'
data=np.load(path)
// 读取第一张faceGrid图像数据
face_mask_data=data['train_face_mask'][0];
// 输出
print(face_mask_data)

得到的结果如下图所示,全为1的区域表示人脸ROI在图像中的位置。
深度学习入门之python图像模式(修改数组数据)_第1张图片
将图像数据转化为图片,并获取相关信息:

from PIL import Image;
im = Image.fromarray(data['train_face_mask'][0])
print(im)
im.show()

在控制台就会出现图像的属性,并且在屏幕上显出图像的原型。


在这里插入图片描述
明明图像数据有一块区域全为1,为什么转化为图像显示却全是黑色的。这就涉及到python中图像模式的问题,对于上图,其图像模式是L,即灰度图。

二、python中图像模式

2.1 模式“1”

如果图像模式为1,那么它就是二值图,非黑即白,每个像素用8个bit表示,那么可表示的范围为[0~255],0表示黑,255表示白。

2.2 模式“L”

该模式表示图像是灰度图像,同样每个像素用8位表示,0表示最黑,255表示最白,介于之间的数字可表示不同的灰度。

对于上面的faceGrid图像,就是灰度图。这样,我们就知道为什么图像的区分度不明显,因为0和1尽管表示不同的灰度,但是差别不大,可以近似地认为两者都表示最黑

为了更清晰地观察faceGrid,需要对图像数据进行修改,把1改为255,可以利用下面的程序:

for i in range(face_mask_data.shape[0]):
    for j in range(face_mask_data.shape[0]):
        if face_mask_data[i][j]==1:
            face_mask_data[i][j]=255
            
im=Image.fromarray(face_mask_data)
im.show()

可以发现,很清晰地显现出人脸相对于图像的位置。

在这里插入图片描述

2.3 模式“RGB”和“RGBA”

三通道彩色图像一般都是该模式,每个像素用24个bit来表示,R、G、B三个分量都各占8位;而“RGBA”模式多了一个Alpha通道,一共需要32bit。不作过多介绍。

你可能感兴趣的:(深度学习,python,深度学习)