Python | 人脸识别+活体检测+背景模糊+关键点检测系统(Face_Recognition+dlib+OpenCV+MediaPipe+PyQt)

news2024/11/25 0:32:42

本博客为人脸识别系统项目简介

项目GitHub完整源代码地址:

一、运行环境

        本系统能够运行在基于PC操作系统Windows环境下,要求Windows操作系统安装Python 3.9 及以上环境,且已安装MySQL数据库。

Python3.9 安装:Python 3.9安装教程

MySQL 安装 :MySQL 8.0.26 安装教程

二、开发环境

        1、开发语言

        本项目使用Python作为主要的开发语言。

        2.开发工具

                前端:Qt-Designer

                后端:PyCharm

                数据库:Navicat

                包管理工具:Anacoda

 PyCharm安装:PyCharm安装教程

Anacoda安装:Anaconda安装教程

Qt-Designer安装:Qt Designer安装教程

Qt-Designer使用:Qt Designer工具使用

Navicat安装:Navicat 安装教程

        3、主要开发技术

        (1)Dlib

        Dlib是一个机器学习的开源库,包含了机器学习的很多算法,使用起来很方便,直接包含头文件即可,并且不依赖于其他库(自带图像编解码库源码)。Dlib可以帮助创建很多复杂的机器学习方面的软件来帮助解决实际问题。目前Dlib已经被广泛的用在行业和学术领域,包括机器人,嵌入式设备,移动电话和大型高性能计算环境。

Python3.9以上安装Dlib:【Python】dlib 无需编译安装 dlib-19.23.0-cp39-cp39-win_amd64.whl_dlib cp39-CSDN博客

        (2)OpenCV

        OpenCV是一个开源的计算机视觉库,它提供了很多函数,这些函数非常高效地实现了计算机视觉算法,其使用 C/C++ 开发,同时也提供了 Python、Java、MATLAB 等其他语言的接口。OpenCV的应用领域非常广泛,包括图像拼接、图像降噪、产品质检、人机交互、人脸识别、动作识别、动作跟踪、无人驾驶等。OpenCV 还提供了机器学习模块,可以使用正态贝叶斯、K最近邻、支持向量机、决策树、随机森林、人工神经网络等机器学习算法。

OpenCV安装:OpenCV安装教程

        (3)face_recognition

        face_recognition是一个强大、简单、易上手的人脸识别开源项目,并且配备了完整的开发文档和应用案例,特别是兼容树莓派系统。face_recognition中的人脸识别模型来自开源的机器学习库Dlib,其中的大部分模型用Labeled Faces in the Wild人脸数据集进行测试,有高达99.38%的准确率。但对小孩和亚洲人脸的识别准确率尚待提升。

安装前置条件:已安装dlib

face_recognition安装:face_recognition安装教程

face_recognition中文教程:face_recognition GitHub

        (4)PyQt5

        Qt是一套C++库和开发工具,包括平台 图形用户界面、网络、线程、正则表达式、SQL 数据库、SVG、OpenGL、XML、用户和应用程序 设置、定位和定位服务、短程通信(NFC)和蓝牙)、网页浏览、3D 动画、图表、3D数据可视化和 与应用商店接口。

        而PyQt是一个GUI部件工具包,是Qt的一个Python接口,是最强大、最流行的跨平台GUI库之一。PyQt5 将Qt中的1000多个类实现为一组Python模块。

PyQt安装:PyQt5安装教程

PyQt5官网:QtWidgets — PyQt Documentation v5.15.4

        (5)百度AI开放平台

        百度AI开放平台提供全球领先的语音、图像、NLP等多项人工智能技术,开放对话式人工智能系统、智能驾驶系统两大行业生态。其中的人脸识别技术基于深度学习,能够准确识别图片和视频流中的人脸信息,包含人脸检测与属性分析、人脸对比、人脸搜索、活体检测、人脸特效等能力。灵活应用于金融、泛安防、安全生产等行业场景,满足身份核验、人脸考勤、闸机通行、互动娱乐等业务需求。

百度AI开放平台:人脸识别__百度智能云 

三、功能概述

        本项目开发一套基于人脸识别技术的用户登录注册系统,可以分割为两大部分,分别是用户端程序、管理员端程序。

        用户端程序的功能包括用户注册、用户登录、用户登出3个主要功能,以及活体检测、人脸比对、精细分割、关键点检测4个辅助功能。

        管理员端程序的功能包括管理员登录、用户注销、用户解锁、历史记录4个主要功能。

1、以用户身份进入系统

         (1)用户注册

        用户点击注册,将个人信息输入系统后,包括账号、密码、性别以及更多信息,系统自动捕获并计算当前用户的人脸信息,保存到数据库中。

         (2)用户登录

        用户点击登录按钮,输入账号及密码后,系统通过查找数据库,返回是否通过信息验证。如果通过信息验证,系统对当前摄像头的用户进行活体检测以及人脸识别,最终确定是否成功登录。一旦某用户在进行登录操作时,活体检测或人脸识别失败超过3次以上,要求系统对当前用户的账号进行锁死,并弹出相应的警告。 

         (3)用户登出

        用户点击登出,系统登出当前登录用户。

         (4)活体检测

        用户点击活体检测,系统检测用户是否使用电子屏幕或者照片进行欺骗,随后系统要求用户按照系统提示完成指定的动作,包括左摇头、右摇头、眨眼、张嘴等。用户完成后提示通过活体检测。若用户超时,则中止活体检测,提示未通过活体检测。

         (5)人脸对比

        用户点击人脸对比,选择任意两张带有人脸的jpg或者png格式图片。点击比对按钮后,系统确认是否是同一人。

         (6)背景模糊 

        用户点击背景模糊,系统快速对用户人体部分进行识别,将背景进行模糊处理。

         (7)姿态检测

        用户点击状态检测,系统快速对用户人体部分进行识别,将人的各个关键点进行标识,包括眼睛、嘴巴、躯干、四肢等。

2、以管理员身份进入系统

         (1)管理员登录

        管理员点击管理员登录,输入账号、密码后,要求系统快速查询存储数据,并确定是否登录成功。

         (2)用户解锁

        管理员点击用户解锁,输入需要解锁用户的账号、密码后,要求系统快速查询存储数据,并确定是否解锁成功。

         (3)用户注销

        管理员点击用户解锁,输入需要注销用户的账号、密码后,要求系统快速查询存储数据,并确定是否注销成功。

         (4)历史记录

        管理员点击历史记录,系统自动打开Excel表格,表格记录近一段时间登录当前系统的用户信息,包括登录时间、登录摄像头、用户姓名等。

四、代码详解

        1、UI代码

  • UI界面设计:Python | 人脸识别系统 — UI界面设计
  • UI事件处理:Python | 人脸识别系统 — UI事件处理

        2、用户端代码

  • 用户端博客索引:
  • 基本功能
    • 人脸识别:Python | 人脸识别系统 — 人脸识别
    • 活体检测:Python | 人脸识别系统 — 活体检测
    • 背景模糊:Python | 人脸识别系统 — 背景模糊
    • 姿态检测:Python | 人脸识别系统 — 姿态检测
    • 人脸比对:Python | 人脸识别系统 — 人脸比对
  • 综合功能
    • 用户操作:Python | 人脸识别系统 — 用户操作

        3、管理员端代码

  • 管理员端博客索引:
    • 管理员操作:
    • 用户操作:

        4、项目GitHub源码

GitHub完整源代码地址:

项目结构:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/489446.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【UE】坦克开火

1. 添加开火的操作映射 2. 创建一个actor蓝图类,添加一个静态网格体组件 添加发射物移动组件 设置初始速度和最大速度 发射物重力范围设为0.05 添加音频组件 设置音效 3. 打开炮管的静态网格体 在插槽管理器中创建插槽 将创建的插槽放到炮口位置 4. 打开“BP_BaseT…

B-Tree (多路查找树)分析-20230503

B-Tree (多路查找树)学习-20230503 前言 B-树是一类多路查询树,它主要用于文件系统和某些数据库的索引,如果采用二叉平衡树访问文件里面的数据,最坏情况下,磁头可能需要进行O(h)次对磁盘的读写,其中h为树的高度&…

探究Android插件化开发的新思路——Shadow插件化框架

Shadow插件化框架是什么? Shadow是一种Android App的插件化框架,它利用类似于ClassLoader的机制来实现应用程序中的模块化,并让这些模块可以在运行时灵活地进行加载和卸载。Shadow框架主张将一个大型的Android App拆分成多个小模块&#xff…

提升V-Ray渲染效率的五个实用技巧!

Chaos V-Ray是一个 3D渲染插件,可用于所有主要的 3D设计和 CAD程序。V-Ray可以和 3ds Max、Cinema 4D、Houdini、Maya、Nuke、Revit、Rhino、SketchUp和 Unreal无缝协作。艺术家和设计师也可以通过使用 V-Ray的实时光线来追踪探索和分享自己的项目,并渲染…

SpringBoot调取OpenAi接口实现ChatGpt功能

很高兴和大家分享我实现的一个小项目,利用 Spring Boot 实现了一个 ChatGpt 对话系统。在本文中,我将详细介绍这个项目的实现步骤,以及代码实现。 什么是 ChatGpt ChatGpt 是一种基于 GPT 技术的对话系统,能够生成连贯、流畅、…

V-Ray怎么快速渲染_渲染加速小技巧

很多小伙伴在使用V-Ray渲染器的时候都想要更加快速的出图,今天Renderbus瑞云渲染就给大家分享一下V-Ray渲染加速的小技巧。 在了解渲染加速技巧之前,我们首先要了解渲染制作主要受两个因素影响——图像质量和渲染时间,高图像质量是以长渲染时…

k8s集群搭建(3主2从)

目录 kubeadm 和二进制安装 k8s 适用场景分析 多 master 节点高可用架构图 集群环境准备 部署过程 修改主机内核参数(所有节点) 配置阿里云的repo源(所有节点) 配置国内安装 docker 和 containerd 的阿里云的 repo 源 配置…

day11 TCP连接管理与UDP协议

目录 ​编辑 连接的建立——”三次握手” 连接的释放——“四次挥手” 保活计时器 用户数据报协议 UDP​编辑 连接的建立——”三次握手” TCP 建立连接的过程叫做握手。 采用三报文握手:在客户和服务器之间交换三个 TCP 报文段,以防止已失效的连接…

SPSS如何进行多重响应分析之案例实训?

文章目录 0.引言1.多重响应变量频率分析2.对多重响应变量集进行交叉表分析3.使用表过程研究多重响应变量集 0.引言 因科研等多场景需要进行绘图处理,笔者对SPSS进行了学习,本文通过《SPSS统计分析从入门到精通》及其配套素材结合网上相关资料进行学习笔记…

对模式的迷信,大部分是幻觉和妄想

对模式的迷信,大部分是幻觉和妄想 往往有严重的投机心理 郑翔洲,所谓模式设计专家 还是有点虚,仅供一点参考 说苹果、说华为、说小米这些总结都是事后诸葛亮 趣讲大白话:商业模式被妖魔化 【趣讲信息科技153期】 ****************…

从零构建等保三级|安全狗一站式等保解决方案助用户快速过等保

一 政策法规下的等级保护 “没有网络安全就没有国家安全,没有信息化就没有现代化。” 在2017年6月1日,我国开始全面实行《网络安全法》,其中第二十一条规定了“国家实行网络安全等级保护制度”。此外,在2019年5月13日&#xff…

数据开发常见问题

目录 环境变量过多或者参数值过长时,为什么提交作业失败? 为什么Shell作业状态和相关的YARN Application状态不一致? 创建作业和执行计划的区别是什么? 如何查看作业运行记录? 如何在OSS上查看日志? 读…

阿里云服务器vCPU和CPU有什么区别?

阿里云服务器vCPU和CPU是什么意思?CPU和vCPU有什么区别?一台云服务器ECS实例的CPU选项由CPU物理核心数和每核线程数决定,CPU是中央处理器,一个CPU可以包含若干个物理核,通过超线程HT(Hyper-Threading&#…

不坑盒子 (Office、WPS插件)高效办公,让你提前进入摸鱼状态。

不坑盒子简介 很多朋友在工作过程中需要对Word文档进行编辑处理,如果想让Word排版更有效率可以试试小编带来的这款不坑盒子软件,是一个非常好用的办公工具,拥有近百项功能的Word,wps插件,支持Office 2010以上的版本&a…

Python入门(二)变量和简单数据类型(一)

变量和简单数据类型(一) 1.变量1.1 变量的命名和使用1.2 变量其实是标签 2.字符串2.1 使用方法修改字符串的大小写2.2 在字符串中使用变量 2.3 使用制表符或换行符来添加空白2.3 使用字符串时应该避免的错误 作者:Xiou 1.变量 下面来尝试在…

System verilog【1】基础语法和数据类型+容器+结构体+不可综合的数据类型

前言 某种事情是不可能重新复原的,只能向前推进……不管什么地方,两人能去哪里就去哪里好了——《国境以南太阳以西》 \;\\\;\\\; 目录 前言内建数据类型reg和wire和logiclogic和bit四值和二值类型位宽类型转换隐式转换 常见数据类型定宽数组动态数组pa…

在Transformer模块上用CNN网络搭建方式解决图像分类问题

来源:投稿 作者:摩卡 编辑:学姐 论文标题:DeepViT: Towards Deeper Vision Transformer Motivation 本文受到传统CNN网络搭建方式的启发(深层的CNN网络可以学习到关于图像更加丰富和复杂的表示), 于是思考是否可以将这种搭建方式…

我的“测试开发”成长之路

我相信,有很多测试人员会不断问自己,自己到底要不要坚持做测试,测试的职业发展到底怎么样?如果你还在迷茫,在到处找各种大牛问类似的问题,我希望这篇文章,你看完能够结束你的这个烦恼&#xff0…

Sketch会不会出windows版本?

Sketch会不会出windows版本?Sketch 可以在线编辑吗?先说结论,不能。 但有一个更好用易用的 Windows 也能用的「协作版 Sketch」,最大的特点3个:在线、免费、Windows也能用! Windows 也能用的「协作版 Ske…

JavaScript全解析——canvas 入门(上)

●canvas 是 HTML5 新增的一个标签, 表示画布 ●canvas 也是 h5 的画布技术, 我们通过代码的方式在画布上描绘一个图像 canvas 标签 ●向进行 canvas 绘图, 首先我们先要了解到 canvas 标签 ●是 html5 推出的一个标签 <html> <head>... </head> <body&…