物联网
您现在所在的位置:首页>企业动态>物联网

人脸检测和识别

编辑:学到牛牛IT培训    发布日期: 2024-01-22 09:10:47  

人脸检测是指在图像中完成人脸定位的过程。人脸识别是在人脸检测的基础上进一步判断人的身份。


1、基于Haar的人脸检测

OpenCV中提供了多个训练好的分类器,其中Haar级联分类器用来进行人脸检测。

分类器文件在OpenCV源代码的“..Python3.8Libsite-packagescv2data”文件夹中。

该文件夹中有以下常用的分类器文件:

haarcascade_eye.xml 人眼检测

haarcascade_eye_tree_eyeglasses.xml 眼镜检测

haarcascade_frontalcatface.xml 猫脸检测

haarcascade_frontalface_alt.xml 人脸检测

haarcascade_frontalface_default.xml 人脸检测

haarcascade_profileface.xml 侧脸检测


cv2.CascadeClassifier()函数用于加载分类器,其基本格式如下。

faceClassifier = cv2.CascadeClassifier(filename)

参数说明:

filename: 为级联分类器的文件名。

faceClassifier: 为返回的级联分类器对象。


级联分类器对象的detectMultiScale()方法用于执行检测,其基本格式如下。

objects = faceClassifier.detectMultiScale(image)

参数说明:

objects: 为返回的目标矩形集,矩形中为人脸。

image: 为输入图像,通常为灰度图像。


案例1:识别单人人脸

import cv2


# 读取图像

img = cv2.imread("img/dr.png")


# 将RGB图像转为灰度图,其目的是方便人脸识别

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)


# 创建分类器,并加载人脸检测文件

face = cv2.CascadeClassifier("haar/haarcascade_frontalface_default.xml")


# 执行人脸检测,gray为被检测对象,返回检测到的人脸集数据

faces = face.detectMultiScale(image=gray)


# 单人检测。获取一个人脸的数据,其中xy为左上顶点坐标,w为人脸宽度,h为人脸高度

x, y, w, h = faces[0]


# 在原图中画出人脸位置。(x, y)为左上顶点,(x+w, y+h)为右下项点,1为线宽

cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 1)


cv2.imshow("test", img)

cv2.waitKey(0)

运行结果:


1.png


案例2:识别多人人脸

import cv2


# 读取图像

img = cv2.imread("img/drz.jpg")


# 将RGB图像转为灰度图,其目的是方便人脸识别

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)


# 创建分类器,并加载人脸检测文件

face = cv2.CascadeClassifier("haar/haarcascade_frontalface_default.xml")


# 执行人脸检测,gray为被检测对象,返回检测到的人脸集数据

faces = face.detectMultiScale(image=gray)


# 识别多人人脸

for f in faces:

    x, y, w, h = f

    # 根据识别的特征,反复往img图像中标注人脸

    cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 1)


cv2.imshow("test", img)

cv2.waitKey(0)

运行结果:

2.png


案例3:猫脸识别

使用haarcascade_frontalcatface.xml分类器文件,可以检测图像中的猫脸。

import cv2


# 读取图像

img = cv2.imread("img/cat.jpg")


# 将RGB图像转为灰度图,其目的是方便图像识别

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)


# 创建分类器,并加载猫脸检测文件

face = cv2.CascadeClassifier("haar/haarcascade_frontalcatface.xml")


# 执行猫脸检测,gray为被检测对象,返回检测到的猫脸集数据

faces = face.detectMultiScale(image=gray)


# 识别多个猫脸

for f in faces:

    x, y, w, h = f

    # 根据识别的特征,反复往img图像中标注猫脸

    cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 1)


cv2.imshow("test", img)

cv2.waitKey(0)

运行结果:

3.png


案例4:检测摄像头中的人脸

import cv2


# 打开摄像头

video = cv2.VideoCapture(0)


# 加载人脸分类器

face = cv2.CascadeClassifier("haar/haarcascade_frontalface_default.xml")


while video.isOpened():

    # 读取每一帧图像

    b, frame = video.read()


    if b:

        # 将图像转为灰度图

        gary = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)


        # 检测每一帧图像中的人脸

        faces = face.detectMultiScale(gary)


        # 标注检查出的人脸

        for f in faces:

            x, y, w, h = f

            cv2.rectangle(frame, (x, y), (x+w, y+h), (246, 0, 220), 2)


        cv2.imshow("test", frame)

        key = cv2.waitKey(30)

        if key == 27:

            break

    else:

        break

# 释放资源

video.release()

cv2.destroyAllWindows()


免费试学
课程好不好,不如实地听一听

封闭学习

2

1

联系我们

电话:028-61775817

邮箱:1572396657@qq.com

地址:成都市金牛区西城国际A座8楼

  • 物联网_物联网专题新闻_物联网IOT资讯-学到牛牛
    物联网_物联网专题新闻_物联网IOT资讯-学到牛牛

    扫一扫,免费咨询

  • 物联网_物联网专题新闻_物联网IOT资讯-学到牛牛
    物联网_物联网专题新闻_物联网IOT资讯-学到牛牛

    微信公众号

  • 物联网_物联网专题新闻_物联网IOT资讯-学到牛牛
物联网_物联网专题新闻_物联网IOT资讯-学到牛牛

学一流技术,找高薪工作

物联网_物联网专题新闻_物联网IOT资讯-学到牛牛

7-24小时服务热线:

028-61775817

版权声明 网站地图

蜀ICP备2021001672号

课程问题轻松问