利用opencv带你玩转人脸识别-中篇(人脸检测,检测多个,视频检测快速入门)(代码片段)

苏凉.py 苏凉.py     2023-03-10     456

关键词:

🐚作者简介:苏凉(专注于网络爬虫,数据分析)
🐳博客主页:苏凉.py的博客
🌐系列专栏:python-opencv快速入门
👑名言警句:海阔凭鱼跃,天高任鸟飞。
📰要是觉得博主文章写的不错的话,还望大家三连支持一下呀!!!
👉关注✨点赞👍收藏📂

文章目录


前言

在上一篇文章中我们主要了解到用opencv如何对图像进行读取,以及对图像进行灰度转换和尺寸大小的调整,还有如何在图像上画矩形等操作。那么这篇文章主要给大家介绍如何用opencv进行人脸检测,以及数据训练,人脸识别等操作。话不多说,直接进入正题!!
⚜上期传送锚点:
利用opencv带你玩转人脸识别-上篇(读取图片,灰度转换,尺寸修改,绘制矩形快速入门)

1.人脸检测

级联分类器

CascadeClassifier是opencv下objdetect模块中用来做目标检测的级联分类器的一个类。它可以帮助我们对物体进行检测。
级联分类器的原理可参考该篇文章,在这里不过多赘述:
opencv中级联分类器的原理

路径

它在我们安装opencv的配置环境内,安装在哪个路径就去哪个路径找即可:

人脸检测函数

  1. CascadeClassifier参数声明检测人脸的级联分类器的所在路径。如上图,人脸检测级联分类器为:

    在写入路径时,斜线需为 /,且需加上文件类型 .xml后缀。

  2. detecMultiScale参数为每次对人脸检测的缩放倍数,检测次数,以及人脸检测的范围,详见代码展示。

import cv2 as cv

img = cv.imread('./facefile/gray_face1.jpg')
# 指定图像大小
img_resize = cv.resize(img,dsize=(400,500))

# 定义检测函数
def test():
	#定义级联分类器的路径
    face_test =cv.CascadeClassifier('D:/test001/Lib/site-packages/cv2/data/haarcascade_frontalface_alt2.xml')
    #对图像进行检测,1.01为检测的倍数,5为检测次数,0为默认参数,后面两个为最小检测范围和最大检测范围为100*100和300*300像素
    face = face_test.detectMultiScale(img_resize,1.01,5,0,(100,100),(300,300))
    for x,y,w,h in face:
        cv.rectangle(img_resize,(x,y),(x+w,y+h),color = (0,0,255),thickness=1)
    cv.imshow('LYF',img_resize)

test()
# 空格退出
while True:
    if ord(' ') == cv.waitKey(0):
        break
# 释放内存
cv.destroyAllWindows()

运行结果:

多个人脸检测

其实与单个人脸检测一样,只不过需要调整detecMultiscale中的参数即可。
如果效果不佳,也可以选择换一个联级分类器

import cv2 as cv

img = cv.imread('./facefile/chinamembers.jpg')
# 指定图像大小
img_resize = cv.resize(img,dsize=(700,600))

# 定义检测函数
def test():
    face_test =cv.CascadeClassifier('D:/test001/Lib/site-packages/cv2/data/haarcascade_frontalface_alt2.xml')
    face = face_test.detectMultiScale(img_resize,1.05,5,0,(50,50),(100,100))
    for x,y,w,h in face:
        cv.rectangle(img_resize,(x,y),(x+w,y+h),color = (0,0,255),thickness=1)
    cv.imshow('chinaMembers',img_resize)

test()
# 空格退出
while True:
    if ord(' ') == cv.waitKey(0):
        break
# 释放内存
cv.destroyAllWindows()

运行结果:

摄像头人脸检测(VideoCapture)

VideoCapture -调用摄像头,0为默认摄像头,也可以加入视频文件进行识别。

import cv2 as cv

# 定义检测函数
def test(img):
    gray_img = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
    face_test =cv.CascadeClassifier('D:/test001/Lib/site-packages/cv2/data/haarcascade_frontalface_alt2.xml')
    face = face_test.detectMultiScale(gray_img)
    for x,y,w,h in face:
        cv.rectangle(img,(x,y),(x+w,y+h),color = (0,0,255),thickness=1)
    cv.imshow('chinaMembers',img)

# 调用摄像头
cap = cv.VideoCapture(0) #0为默认摄像头,如有外接则调整参数即可


# 空格退出
while True:
    flag,frame = cap.read()
    if not flag: #无值则退出
        break
    test(frame) #有值则调用函数
    if ord(' ') == cv.waitKey(0):
        break

# 释放摄像头
cap.release()
# 释放内存
cv.destroyAllWindows()

结语

到这里我们的人脸检测就结束啦,下期带大家进入人脸信息的录入和保存,以及数据训练,人脸识别等内容。
关注我,咱们下期再见!!

基于opencv的人脸识别,翻车了居然识别错误。(代码片段)

...等需要对入场人员身份信息进行确认和鉴别的场所。进而利用人脸检测算法检测出摄像头拍摄图片中包含的人脸,再使用识别算法对比当前人脸特征和数据库内的人脸特征,确认人员身份,最终输出人员相关的身份信... 查看详情

opencv_人脸检测模型训练人脸识别

...人脸识别一个小案例,主要是帮助小伙伴们解决如何入门OpenCV人脸识别的问题,现在的AI行业比较火热,AI技术的使用比较广泛。就拿现在的只能手机来说吧,现在很多智能手机都必须有人脸识别解锁、拍照自动美颜、拍照物体... 查看详情

人脸识别《一》opencv人脸识别之人脸检测(代码片段)

opencv中已经有人脸识别的功能了,所以来看看整个流程以及具体实现吧。人脸识别:就是给一个已知人脸贴上一个标签。上面这句简单的话,其实包含的信息量好大啊,这说明首先你要知道这是一张脸,然后... 查看详情

对于 OpenCV 人脸检测和识别,人脸是不是略微失真是不是重要?

】对于OpenCV人脸检测和识别,人脸是不是略微失真是不是重要?【英文标题】:DoesitmatteriffacesareslightlydistortedforOpenCVFaceDetection&Recognition?对于OpenCV人脸检测和识别,人脸是否略微失真是否重要?【发布时间】:2020-05-1220:51:15【... 查看详情

21个项目玩转深度学习:基于tensorflow的实践详解06—人脸检测和识别——数据集

书籍:《21个项目玩转深度学习:基于TensorFlow的实践详解》人脸检测FDDBFDDB是UMass的数据集,被用来做人脸检测(FaceDetection)。这个数据集比较大,比较有挑战性。而且作者提供了程序用来评估检测结果,所以在这个数据上面比较... 查看详情

基于opencv读取摄像头进行人脸检测和人脸识别

前段时间使用OpenCV的库函数实现了人脸检测和人脸识别,笔者的实验环境为VS2010+OpenCV2.4.4,opencv的环境配置网上有很多,不再赘述。检测的代码网上很多,记不清楚从哪儿copy的了,识别的代码是从OpenCV官网上找到的:http://docs.op... 查看详情

opencv—人脸识别

前段时间弄过一下人脸识别相关的东西,记录一下撰写不易,转载需注明出处:http://blog.csdn.net/jscese/article/details/54409627本文来自【jscese】的博客!概念FaceDetect人脸检测在一张图像中判断是否存在人脸并找出人脸所在的位置FaceRecog... 查看详情

dlib库包的介绍与使用,opencv+dlib检测人脸框opencv+dlib进行人脸68关键点检测,opencv+dlib实现人脸识别,dlib进行人脸特征聚类dlib视频目标跟踪(代码片段)

...lib人脸检测:绘制出人脸检测框2.1dlib人脸检测源码2.2opencv+dlib人脸检测2.3dlib人脸检测总结3dlib人脸关键点检测:并绘制检测框、关键点、不同区域关键点连线3.1dlib人脸关键点检测源码3.2opencv+dlib进行人脸关键点检测... 查看详情

使用opencv与haar级联算法进行人脸检测和人脸识别

AI人脸识别是一种从数字图像或视频帧中识别或验证人脸的技术。人类可以毫不费力地快速识别面部。这对我们来说是一项轻松的任务,但对计算机来说却是一项艰巨的任务。因为存在各种复杂性,例如低分辨率、遮挡、... 查看详情

opencv联合dlib视频人脸识别例子(代码片段)

...别例子的基础上做了一个实时视频人脸识别功能。原理是利用opencv实时提取视频中的视频流,然后进入人脸检测步骤,步骤类似上篇文章。本篇文章中的程序是在VMware虚拟机下运行的,比较卡,加入人脸识别环节... 查看详情

图片人脸检测——dlib版

上几篇给大家讲了OpenCV的图片人脸检测,而本文给大家带来的是比OpenCV更加精准的图片人脸检测Dlib库。点击查看往期:《图片人脸检测——OpenCV版(二)》《视频人脸检测——OpenCV版(三)》dlib与OpenCV对比识别精准... 查看详情

opencv中检测出人脸之后,需要把检测出的人脸区域提取出来,用作人脸识别,那么如何提取人脸区域

首先使用opencv自带的rectangle函数将检测出来的人脸用矩形框框住,然后新定义一个Mat类型变量将矩形框框住的部分提取出来就可以了;如rectangle(image,Rect(x1,y1,w1,h1),Scalar(0,0,255),1);Matimage_cut=image(cvRect(x,y,w,h));imshow("",image_cut);... 查看详情

python|opencv的人脸检测和人类识别

✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。 查看详情

opencv人脸识别lbph算法源码分析

...在一张图片中把人脸定位出来,完成的是搜寻的功能。从OpenCV2.4开始,加入了新的类FaceRecognizer,该类用于人脸识别,使用它可以方便地进行相关识别实验。原始的LBP算子定义为在3*3的窗口内,以窗口中心像素为阈值,将相邻的8... 查看详情

利用opencv做一个简单的人脸识别(代码片段)

文章目录安装实现人脸识别进行人脸模型训练识别人脸测试效果展示完整代码想开发一个属于自己的人脸识别系统,动手开始吧本项目源代码github戳我戳我戳我本项目演示视频B站戳我戳我戳我加入界面的效果安装opencv和包模... 查看详情

使用 OpenCV 和 Keras 进行人脸比较(不是识别或检测)?

】使用OpenCV和Keras进行人脸比较(不是识别或检测)?【英文标题】:Facecomparison(Notrecognitionordetection)usingOpenCVandKeras?【发布时间】:2018-02-2010:22:16【问题描述】:首先是我的githublinkforthequestion。这是我的问题:我想用Python做一个... 查看详情

opencv的人脸识别基于啥特征

...。基于特征的方法的目标就是寻找上述这些不变特征,并利用这些特征来定位入脸。这类方法在特定的环境下非常有效且检测速度较高,对人脸姿态、表情、旋转都不敏感。但是由于人脸部件的提取通常都借助于边缘算子,因此... 查看详情

一文带你了解人脸检测算法的类型及其工作原理(代码片段)

在过去的几年里,人脸识别受到了广泛的关注,被认为是图像分析领域最有前途的应用之一。人脸检测可以考虑人脸识别操作的很大一部分。根据其强度将计算资源集中在持有人脸的图像部分。图片中的人脸检测方法很... 查看详情