现在读者对图片的数据表示方式以及人脸识别的基本原理已经有所了解。本节利用开源工具来具体实现人脸检测和人脸识别,所用数据可在教材资源平台下载。人脸识别是一个复杂的问题,为了达到一定的准确率,所需的工程量远远不是本教材这一节的内容所能描述的,读者可在实践过程中继续探索。
上一节简单介绍了人脸检测背后的原理,下面首先通过OpenCV来实现人脸检测。
使用以下命令在Python环境中加载OpenCV模块。
In[1]:import cv2
#引入OpenCV模块
In[2]:faceClassifier=cv2.CascadeClassifier('haarcascade_front
alface_default.xml')
#构建OpenCV模块提供的脸部分类器,它用Harr特征检测脸部
In[3]:objImage=cv2.imread('facedetect.jpg')
#读取要进行人脸检测的图片
In[4]:cvtImage=cv2.cvtColor(objImage,cv2.COLOR_BGR2GRAY)
#将图片转化为灰度图像(Gray)
In[5]:foundFaces=faceClassifier.detectMultiScale(objImage,sca
leFactor=1.3,minNeighbors=9,minSize=(50,50),fl
ags=cv2.cv.CV_HAAR_SCALE_IMAGE)
#该命令返回检测到的脸部,每一张检测到的脸都会给出左上角的坐标和脸部
#区域的长和宽。相当于描述了一个方框,将脸部圈起来
In[6]:facenumbers=len(foundFaces)
#该命令给出检测到的人脸数量
In[7]:for(x,y,w,h)in foundFaces:
cv2.rectangle(objImage,(x,y),(x+w,y+h),(0,0,255),2)
#该命令按照返回结果画出红框
In[8]:cv2.imshow(objImage)
#显示标注脸部识别结果的图片
读者可以灵活运用以上命令,进一步拓展应用场景。例如,利用摄像头实时捕捉人脸并检测,同时还可以将检测到的人脸,利用返回的红框进行截图保留,并使用这些图片进行人脸识别。