图像数据可以看成是一个数组。所谓数组就是按顺序排列的一组数。在Python中,数组用下列形式表示。
(x1,x2,。。。,xn)
其中xi(1≤i≤n)可以是数值也可以是一个数组。在Python中可以使用numpy模块查看数组形式的图片数据。
In[11]:importnumpyasnp
#使用numpy包
In[12]:imarray=np。array(im)
#将图像转化成数组表示
In[13]:imarray
#显示图像的数据
Out[13]:
array([[[28,38,27],
[28,38,27],
[28,38,27],
。。。,
。。。,
[82,86,113],
[84,88,115],
[82,86,113]]],dtype=uint8)
In[14]:imarray。shape
#给出图像数据的形状
Out[14]:(2333,1654,3)
从上述示例可以看到,转化成数组后,图像数据有长、宽、通道三个维度,图片中一共有2333×1654个点,其中[28,38,27]表示该点的三个颜色强度分别为28、38、27。
为了提高人脸识别的效率,在获取人脸照片后,一般需要先对照片进行裁剪,只保留脸部的图片信息,如图8-2所示。这个过程叫作脸部检测(FaceDete)。经过脸部检测后,计算机在识别中不必对整张图片进行匹配,只需要考虑脸部信息的匹配即可,所以可以大大减少数据比对的工作量。
图8-2脸部检测和裁剪
脸部检测可以使用Harr-like特征完成。该特征有以下四类。
①边缘特征(EdgeFeatures);
②线特征(Liures);
③中心环绕特征(ter-Surrouures);
④对角线特征(SpecialDiagoureUsedIn)。