基于python的人脸识别系统设计与实现

这篇具有很好参考价值的文章主要介绍了基于python的人脸识别系统设计与实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

案例分享之基于python的人脸识别系统设计与实现

人脸识别即程序对输入的图像进行判别是否有人脸,并识别出有人脸的图像所对应的人。即我们常说的人脸识别一般包含了人脸检测和人脸识别两部分。下面对其在opencv中的相应模块进行分别介绍。

在opencv官网中,有许多推荐人脸在线数据集:http://face-rec.org/databases/,如果需要可以自行下载。

一:人脸检测

在人脸检测中,其主要任务是构造能够区分包含人脸实例和不包含人脸实例的分类器,

二:基本原理

opencv中提供了三种训练好的级联分类器。级联分类器顾名思义即通过不同的特征进行一步步筛选,最终得出所属的分类,它将一个复杂的分类问题拆解为一个个简单的分类问题,随着级联条件的判断,能够一步步筛出大量的负样本,极大的提升了后面分类的速度。下面其做简要介绍:

2.1:Haar级联分类器

haar级联分类器的发展历史暂不做介绍。它主要是将像素划分为很多模块,然后求相邻模块之间的差值以反映图像的灰度变化。最终相关人员将haar特征划分为了:4个边特征,8个线特征,2个中心点特征以及1个对角线特征。
基于python的人脸识别系统设计与实现
opencv中除了haar外还提供了Hog特征和LBP算法的级联分类器,Hog级联分类器主要用于行人检测。LBP算法在后面LBPH人脸识别部分做相应介绍。

级联分类器的使用:在opencv根目录下的opencv_createsamples.exe和opencv_traincascade.exe这两个可以用来训练级联分类器的文件,但自行训练比较耗时。opencv中提供了训练好的级联分类器供用户使用,在相应的haarcascades、hogcascades、lbpcascades文件夹中分别存放着Haar、HOG、LBP级联分类器,,它们以.xml的文件形式存放在opencv的源文件中,不同的.xml文件可以检测不同的类型,如:眼睛、眼镜、正面人脸、鼻子等等。

加载级联分类器的语法格式为:

object=cv2.CascadeClassifier(filename)
其中filename为分类器的路径和名称


在使用级联分类器的时候可以通过下面的一些方法去获取需要的级联分类器.xml文件:

```has-numbering
1:在安装opencv的目录下查找xml文件
2:直接在网络上找到相应的.xml文件,下载并使用。

2.1.1:函数介绍

在opencv中,人脸检测使用的是cv2.CascadeClassifier.detectMultiScale()函数,它可以检测出图中的所有人脸,该函数由分类器对象调用:

objects=cv2.CascadeClassifier.detectMultiScale(image,scaleFactor,minNeighbors,flags,minSize,maxSize)
image:待检测图片,通常为灰度图。
scaleFactor:表示在前后两次的扫描中,搜索窗口的缩放比例。
minNeighbors:表示构成检测目标的相邻矩形的最小个数,默认情况下,该值为3,即有3个以上的检测标记存在时才认为人脸存在。该值越大,检测的准确率就越高,但同时无法被检测到的人脸就越多。
flags:该参数通常被省略,在使用低版本的opencv(1.0X版本)可能被设置为CV_HAAR_DO_CANNY_PRUNING,表示使用canny边缘检测器来拒绝一些区域。
minSize:目标的最小尺寸,小于这个尺寸的目标被忽略。
maxSize:返回值,目标对象的矩形框向量组。

########opencv中人脸检测的具体实现###########

import cv2
dir=r"F:\my_project\opencv\face_recognize"

image=cv2.imread(r"F:\my_project\opencv\img\30.jpg")
#加载分类器模型
faceCascade=cv2.CascadeClassifier(r"F:\my_project\opencv\haarcascade_frontalface_default.xml")
gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)

faces=faceCascade.detectMultiScale(
                                   gray,
                                   scaleFactor=1.15,
                                   minNeighbors=5,
                                   minSize=(5,5)
                                   )
 #逐个标注人脸
for (x,y,w,h) in faces:
    cv2.rectangle(image,(x,y),(x+w,y+h),(0,255,0),2)
cv2.imshow("dect",image)
cv2.waitKey()
cv2.destroyAllWindows()	
=>人脸向量组: [[417  89  31  31]
			  [343  93  28  28]
			  [262  95  29  29]
			  [135  98  28  28]
		  	  [499  98  27  27]
			  [199 100  29  29]]
=>发现6个人脸!

基于python的人脸识别系统设计与实现

基于python的人脸识别系统设计与实现

2.2:LBPH人脸识别

人脸识别就是要找一个模型可以简介且具有差异性的方式反应特征,它先将当前人脸采用与检测相同的方法提取特征,再从已有特征集中找出当前特征的最近邻样本,从而得到当前样本的标签。

在opencv中有三种人脸识别方式,分别为LBPH、EigenFishface、Fisherfaces方法。下面只对LBPH做简要介绍。

LBPH(局部二值模式直方图)模型是基于LBP(局部二值模式)算法。LBP最早被用作纹理描述,因图像局部纹理特征表达效果出众而得到广泛应用。

由于在此更多的是介绍应用,若需对原理进行进一步了解可以查看:https://blog.csdn.net/heli200482128/article/details/79204008

2.2.1:LBPH函数介绍

在opencv中,可以用cv2.face.LBPHFaceRecognizer_create()函数生成LBPH实例模型,用cv2.face_FaceRecognizer.train()函数完成训练,用cv2.face_FaceRecognizer.predict()函数完成人脸识别。

1:cv2.face.LBPHFaceRecognizer_create()函数

retval=recognizer=cv2.face.LBPHFaceRecognizer_create(radius, neighbors, grid_x, grid_y, threshold)
radius:半径值,默认为1
neighbors:邻域点的个数,默认采用8邻域
grid_x:将LBP特征图划分为一个个单元格时,每个单元格在水平方向上的像素个数,该参数值默认为8,即将LBP特征图像在行方向上以8个像素为单位分组。
grid_y:将LBP特征图划分为一个个单元格时,每个单元格在垂直方向上的像素值,该参数值默认为8,即将LBP特征图像在列方向上以8个像素为单位分组。
threshold:在预测时使用,如果大于该阈值,就认为没有识别到任何目标对象。
以上全部参数均为可选参数

2:cv2.face.LBPHFaceRecognizer.train()函数

None=cv2.face.LBPHFaceRecognizer.train(src,labels)
src:训练图像,用来学习的人脸图像
labels:标签,人脸图像所对应的标签
该函数没有返回值

3:cv2.face_FaceRecognizer.predict()函数

该函数对一个待测人脸图像进行判断,寻找与当前图像距离最近的人脸图像,与那个人脸图像最近,就将当前待测图像标注为其对应的标签。当然,如果待测图像与所有人脸图像的距离都大于cv2.face.LBPHFaceRecognizer_create()函数中的指定的阈值,则没有找到对应的结果,即无法识别当前人脸。

label,confidence=recognizer.predict(src)
 src:需要识别的人脸图片
 label:返回的识别结果标签
 confidence:返回的置信度评分,置信度评分用来衡量识别结果与原有模型之间的距离,0表示完全匹配,通常小于50的值可以接受,大于80的则认为差别较大。

#####################人脸识别案例#########################

系统功能描述

项目功能演示
基于python的人脸识别系统设计与实现
基于python的人脸识别系统设计与实现
基于python的人脸识别系统设计与实现
基于python的人脸识别系统设计与实现文章来源地址https://www.toymoban.com/news/detail-440100.html

到了这里,关于基于python的人脸识别系统设计与实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于springboot+深度学习的人脸识别会议签到系统设计与实现

    目录 一、简介 1.1 项目背景 1.2 相关技术介绍 1.2.1 OpenCV库 1.2.2 SeeTaaS平台 1.2.3 深度学习 二、需求分析 2.1 系统概述 2.2 系统功能模块分析 2.2.1 参会人员注册 2.2.2 参会人信息管理 2.2.3 现场人脸识别签到 2.2.4 会议管理 三、系统设计 3.1设计思路 3.2 数据库表设计 3.2.1 主表 3.2.

    2024年02月01日
    浏览(47)
  • Python 毕业设计 - 基于 opencv 的人脸识别上课考勤系统,附源码

    源码下载地址https://download.csdn.net/download/2302_77835532/88237252 这个人脸识别考勤签到系统是基于大佬的人脸识别陌生人报警系统二次开发的。 项目使用Python实现,基于OpenCV框架进行人脸识别和摄像头硬件调用,同时也用OpenCV工具包处理图片。交互界面使用pyqt5实现。 该系统实现

    2024年02月05日
    浏览(72)
  • 基于Springboot+百度AI人工智能人脸识别考勤系统设计与实现

    基于Springboot+百度AI人工智能人脸识别考勤系统设计与实现  博主介绍: 《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费

    2024年02月05日
    浏览(70)
  • 基于java和百度智能AI的人脸识别考勤签到系统设计与实现

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、

    2024年02月05日
    浏览(52)
  • 基于PyQt5GUI的人脸识别系统设计与实现

    目 录 前 言 1 第 1 章 人脸识别系统概述 1 第 2 章 人脸检测技术 1 §2.1 基于 Harr 级联的人脸检测 2 §2.2 基于 face_recognition 开源库的人脸检测… 错误!未定义书签。第 3 章 人脸识别技术 5 §3.1 构造人脸数据集 5 §3.2 模型训练 7 §3.3 实时人脸识别 9 第 4 章 基于 PyQt5 的应用平台 1

    2024年02月04日
    浏览(47)
  • JAVA基于百度AI接口的人脸识别考勤签到系统设计与实现(Springboot框架)

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、

    2024年02月04日
    浏览(57)
  • 基于Java(SpringBoot框架)毕业设计作品成品(28)AI毕业设计人脸识别考勤签到系统设计与实现

    博主介绍: 《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、PPT、论文模版

    2024年02月08日
    浏览(70)
  • 计算机毕业设计:基于python人脸识别考勤系统 OpenCV+Dlib(包含文档+源码+部署教程)

    [毕业设计]2023-2024年最新最全计算机专业毕设选题推荐汇总 感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人 。 Python语言、dlib、OpenCV、Pyqt5界面设计、sqlite3数据库 方法实现、实现步骤 1、实例化人脸检测

    2024年02月04日
    浏览(68)
  • Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之六 简单进行人脸训练与识别

    目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之六 简单进行人脸训练与识别 一、简单介绍 二、简单进行人脸训练与识别 1、LBPH(Local Binary Patterns Histograms)算法进行人脸训练和识别 2、实现步骤: 3、判断是谁的人脸: 案例中涉及的关键函数说

    2024年04月26日
    浏览(92)
  • 毕业设计:基于python人脸识别考勤系统 签到系统 深度学习 Flask框架 Dlib库 MySQL数据库 大数据(源码+论文)✅

    毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏) 毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总 🍅 感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。

    2024年02月20日
    浏览(76)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包