python 学习笔记 opencv人脸识别2 人脸检测

人脸检测和人脸识别是不一样的,人脸检测是在图像中定位人脸区域的过程。

人脸识别是比较收集的人脸中那个和摄像机中的人脸最相似。

在识别之前,计算机需要学习什么是人脸,那种图片才算是人脸而不是其他的东西。怎样学习呢,就是通过大量的图片的学习,就像小孩子一样,每个人生下来的时候,什么都不认识,什么都不知道。我们是慢慢通过学习才知道这个世界, 见到一个东西,第一次不认识,就第二次,第三次,,,,几百次,上千次过后就记住了。计算机也一样。在告诉计算机什么图片是人脸后,识别的可能性很小,但是,通过几万,几十万,的次数过后,识别的可能性就非常大了。

在这里我们不讨论怎样识别,我们利用opencv里面已经训练好的人脸识别器。这个文件地址在open文件下的data文件夹下面:

C:\Python27\Lib\site-packages\cv2\data

该文件下面有很多的内置分类器。

 


OpenCV安装目录中的\data\ haarcascades目录下的haarcascade_frontalface_alt.xmlhaarcascade_frontalface_alt2.xml都是用来检测人脸的Haar分类器。

人脸的Haar特征分类器就是一个XML文件,该文件中会描述人脸的Haar特征值。当然Haar特征的用途可不止可以用来描述人脸这一种,用来描述眼睛,嘴唇或是其它物体也是可以的。


代码:

# -*- coding: cp936 -*-
import cv2

capture = cv2.VideoCapture(0)
#加载模型
face = cv2.CascadeClassifier("C:\\Python27\\Lib\site-packages\\cv2\\data\\haarcascade_frontalface_alt2.xml")
#创建窗口
cv2.namedWindow("image")
while True:
    ret,frame = capture.read()
    #灰色处理
    gray = cv2.cvtColor(frame,cv2.COLOR_RGB2GRAY)
    #检测人脸(多张人脸)
    faces = face.detectMultiScale(gray,1.1,3,0,(100,100))
    #标记人脸
    for (x,y,w,h) in faces:
        cv2.rectangle(frame,(x,y),(x+w,y+h),(255,0,0),10 )
    #显示图片
    cv2.imshow("image",frame)
    #暂停窗口
    if cv2.waitKey(10) & 0xFF == ord("q"):
        break
#释放资源
capture.release()
cv2.destroyAllWindows()
再检测到人脸后,会有一个蓝色框框将人脸框起来。





猜你喜欢

转载自blog.csdn.net/qq_40452317/article/details/80455680