上一期分享了TensorFlow手写数字识别的文章。本期我们简单了解一下OpenCV的人脸识别测试,就是识别图片或者视频中的人脸。
要在OpenCV中使用Haar特征检测人脸,需要在haarcascades目录中使用OpenCV提供的xml文件(级联表)。这个级联表有一个训练好的AdaBoost训练集。首先,利用样本的哈尔特征对分类器进行训练,得到级联AdaBoost分类器。哈尔特征值反映了图像灰度的变化。比如脸部的一些特征可以简单地用矩形特征来描述,比如:眼睛比脸颊深,鼻梁两侧比鼻梁深,嘴巴比周围的颜色深。
安装OpenCV3时,有一个/haarcscades文件夹,里面包含了OpenCV的所有人脸检测XML文件。
haarcascade _ eye.xml
haarcscade _ eye _ tree _ eyes . XML
haarcascade _ frontalcatface.xml
haarcscade _ frontal catface _ extended . XML
haarcascade _ frontalface _ alt.xml
haarcscade _ frontal face _ alt _ tree . XML
haarcscade _ frontal face _ alt2 . XML
haarcscade _ frontal face _ default . XML
haarcascade _ fullbody.xml
haarcscade _ left eye _ 2 splits . XML
haarcscade _ license _ plate _ RUS _ 16 stages . XML
haarcascade _ lowerbody.xml
haarcascade _ profileface.xml
haarcascade _ righteye _ 2splits.xml
haarcscade _ Russian _ plate _ number . XML
haarcascade _ smile.xml
haarcascade _ upperbody.xml
上面提到的xml是人脸不同部分的模型,我们使用以下模型来识别人脸。
haarcascade _ frontalface _ alt.xml
本期分享如何用这个模型识别图片中的人脸。
导入cv2 #导入
img=cv2 . imread(r ' d : foxtable example image Li . jpg ')#导入图片
Face=cv2。级联分类器(r 'd: 程序文件(x86) anaconda 3 pkgs libopencv-3 . 4 . 1-h875 b8 _ 3 library etc Haar级联 haar cascade _ frontal face _
Gray=cv2.cvtcolor (img,cv2.color _ rgb2gray) # gray
face=face . detection多尺度(灰色)
对于面: # 5中的(x,y,w,h)参数,参数图片,2坐标原点,3标识尺寸,4,颜色5,线宽
cv2 .矩形(img,(x,y),(x w,y h),(0,255,0),2)
2.CVS。命名窗口(“电源”)#创建窗口
2.cvimshow ('powers _ li ',img) #显示图片
2.cv2.waitKey(0) #暂停窗口
2.cv2.destroyWindow() #关闭窗口
#关上窗户
cv2.destroyAllWindows()
用OpenCV自带的模型库很容易检测人脸。下次,我们将分享如何从视频中检测人脸。