基于OpenCV的人脸识别自助商店(源码&部署视频)
Posted m0_73388125
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于OpenCV的人脸识别自助商店(源码&部署视频)相关的知识,希望对你有一定的参考价值。
1.模块功能介绍
实现人脸识别模块、人脸登录与注册功能、商店显示和用户余额页显示功能
用GUl图形界面实现(pyqt)语言python windows下软件pycharm
1.用户登录模块:刷脸登录
2.注册模块:拍照截取与对齐上传人脸信息录编入用户的余额和号
3.登陆成功后,进入商店页面
4.用户进入商店有余额和商店商品价格
注册录入:人脸截取与对齐( opencv+dlib):
利用opencv 或dlib的检测视频人脸并截取。并输入编号和余额。
2.视频演示
[项目分享]基于OpenCV的人脸识别自助商店(源码&部署视频)_哔哩哔哩_bilibili
3.效果展示
4.第三方包的安装
opencv 的安装,输入:pip install opencv-python。
注:numpy与OpenCV绑定安装,无需自己输入命令。
pillow的安装,输入: pip install pillow
注:pillow为图像处理包。
contrib的安装,输入:pip instal opencv-contrib-python
5.OpenCV人脸识别的原理:
您可能想知道本教程与参考的博客方法的不同?
好吧,请记住,dlib人脸识别帖子依赖于两个重要的外部库:
(1)dlib(显然)
(2)face_recognition(这是一组易于使用的人脸识别实用程序,包含dlib)
虽然我们使用OpenCV来进行人脸识别,但OpenCV本身并不负责识别人脸。
在今天的教程中,我们将学习如何将深度学习和OpenCV一起应用(除了scikit-learn之外没有其他库):
(1)检测人脸
(2)计算128维人脸嵌入以量化人脸
(3)在嵌入之上训练支持向量机(SVM)
(4)识别图像和视频流中的人脸
所有这些任务都将通过OpenCV完成,使我们能够获得“纯粹的”OpenCV人脸识别管道(pipeline)。
为了构建我们的OpenCV人脸识别管道,我们将在两个关键步骤中应用深度学习:
模仿该博客,应用人脸检测,检测人脸在图像中的存在和位置,但不识别它
提取量化图像中每个面部的128维特征向量(称为“嵌入”)
我之前已经讨论过OpenCV的人脸检测是如何工作的,所以如果你以前没有检测到人脸,请参考:
6.人脸姓名识别代码实现:
import numpy as np
import cv2
# 人脸识别分类器
faceCascade = cv2.CascadeClassifier(r'C:\\python3.7\\Lib\\site-packages\\cv2\\data\\haarcascade_frontalface_default.xml')
# 识别眼睛的分类器
eyeCascade = cv2.CascadeClassifier(r'C:\\python3.7\\Lib\\site-packages\\cv2\\data\\haarcascade_eye.xml')
# 开启摄像头
cap = cv2.VideoCapture(0)
ok = True
while ok:
# 读取摄像头中的图像,ok为是否读取成功的判断参数
ok, img = cap.read()
# 转换成灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 人脸检测
faces = faceCascade.detectMultiScale(
gray,
scaleFactor=1.2,
minNeighbors=5,
minSize=(32, 32)
)
# 在检测人脸的基础上检测眼睛
for (x, y, w, h) in faces:
fac_gray = gray[y: (y+h), x: (x+w)]
result = []
eyes = eyeCascade.detectMultiScale(fac_gray, 1.3, 2)
# 眼睛坐标的换算,将相对位置换成绝对位置
for (ex, ey, ew, eh) in eyes:
result.append((x+ex, y+ey, ew, eh))
# 画矩形
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
for (ex, ey, ew, eh) in result:
cv2.rectangle(img, (ex, ey), (ex+ew, ey+eh), (0, 255, 0), 2)
cv2.imshow('video', img)
k = cv2.waitKey(1)
if k == 27: # press 'ESC' to quit
break
cap.release()
cv2.destroyAllWindows()
7.刷脸购物相关研究:
技术原理:人脸特征模板识别
支付宝的人脸识别技术采用在该领域广泛应用的区域特征分析算法,它融合了计算机图像处理技术与生物统计学原理于一体,利用计算机图像处理技术从视频中提取人像特征点,利用生物统计学的原理进行分析建立数学模型,即人脸特征模板。利用已建成的人脸特征模板与被测者的人的面像进行特征分析,根据分析的结果来给出一个相似值。通过这个值即可确定是否为同一人。
说得更加技术宅一些,阿里巴巴提供的材料显示的技术原理是:这个系统人脸识别中各个环节全部基于深度神经网络技术(CNN),通过人脸检测、关键点定位、特征提取和特征比对等技术手段,从图像或视频中发现,定位人脸进而识别出人脸所属的人的身份。
据称该系统已累计处理10亿人脸图像数据。
支付宝人脸识别操作流程:
人脸照片由用户上传到支付宝系统,经过系统分析认证,然后“绑定”自己的支付账户。每次支付只要在下单购买后,让支付系统扫描用户脸部并确认身份,即可完成支付。
为什么选择人脸支付而不是现在应用更广泛的指纹识别呢?支付宝给出的答案是由于操作方式是非接触式,比指纹等支付更有利于打消用户对个人隐私的顾虑。
未来应用:无需携带现金和银行卡,经过收银机1秒内即可实现刷脸支付
马云的“刷脸支付”给未来生活支付方式带来了全新变革,根据阿里巴巴应用此技术的前景,有了扫脸支付系统,人们无需携带现金和银行卡,更不需要记忆各种密码或账号,用户只需要用手机前置摄像头拍摄照片上传到多核处理系统上完成注册,系统抽取人脸特征,进行处理之后注册成功。当在线下购物时,用户只要走到收银机前就可在1秒内实现人脸识别完成支付。
其实类似的脸部识别技术在全球技术研发中并不罕见,去年芬兰一家叫做Uniqul的公司已经在赫尔辛基开始了“刷脸支付”的实践应用,并按照服务覆盖面积收取不同价格的使用费用。而我国中科院的生物识别与安全技术研究中心也在研究基于人脸识别的支付方式,其实该识别技术已经于2008年北京奥运会时使用过。
8.系统的整合:
上面的模型训练好了,但对于我们来说它的作用就只是知道了其准确率还行,其实深度学习的目的最重要还是应用,是时候用上面的模型做点自定义的部分,背景图可以自己选择,避免了出现网红UI界面的情况出现(避免了搭边的时候撞衫)。可不可以用上面的模型识别下自己表达的情绪呢?不如做个系统调取摄像头对实时画面中的表情进行识别并显示识别结果,既能可视化的检测模型的实用性能,同时使得整个项目生动有趣激发自己的创造性,当你向别人介绍你的项目时也显得高大上。这里采用PyQt5进行设计,首先看一下最后的效果图,完整的项目如下:
下图完整源码&环境部署视频教程&自定义UI界面&操作指南
参考博客《Python基于OpenCV的人脸识别自助商店(源码&部署视频)》
9.参考文献
**1.[期刊论文]**基于CNN和SVM的人脸识别系统的设计与实现
期刊:《计算机与数字工程》 | 2021 年第 002 期
**摘要:**针对人脸识别在实际应用中存在姿态变化、表情、遮挡等问题,研究了结合支持向量机(SVM)分类的卷积神经网络(CNN)人脸识别算法,设计并实现了人脸识别系统.系统首先使用CNN提取人脸特征向量,再将特征向量通过SVM进行分类.测试结果表明,系统在训练样本充分时面对人脸姿态变化、表情、遮挡等情况下都具有较好的性能,识别率在95%以上,能满足一般的人脸识别需求.
**关键词:**人脸识别;卷积神经网络;支持向量机;深度学习
**2.[期刊论文]**基于Python语言的视频监控人脸识别系统的实现
期刊:《集成电路应用》 | 2021 年第 001 期
**摘要:**基于调用人脸识别接口实现鉴别功能具有使用方便和识别率高的特点,阐述百度和旷世人脸识别接口的调用方法,并使用Python语言进行了测试验证,从而取得较好的实用价值。
**关键词:**人脸识别;接口;活体检测;Python
链接:https://www.zhangqiaokeyan.com/academic-journal-cn_application-ic_thesis/0201288862812.html
**3.[期刊论文]**图像降噪和增强对人脸识别系统识别性能的影响
期刊:《刑事技术》 | 2021 年第 001 期
**摘要:**目的 研究图像降噪和图像增强方法 对人脸识别系统识别性能的影响,以期为人脸识别系统应用过程中的图像处理方法 选取提供理论指导和技术方案.方法 收集33起人像鉴定领域实际案例中的人脸图像素材,研究以高斯滤波和小波变换为代表的图像降噪技术以及具有边缘保持和小波变换特性的单帧图像超分辨率增强技术对人脸识别系统识别性能的影响,并对不同图像处理方法 对人脸识别性能的影响进行量化比较分析.结果 本文研究的图像降噪技术均显著提高了人脸识别系统的识别准确性,而图像增强技术虽然提高了人脸图像显示效果,但对人脸识别系统的识别性能无正向促进作用.此外,高斯模糊图像处理的图像降噪方法 虽然简单,但与本文研究的其他方法 比较,其在人脸识别系统识别性能改善方面效果最显著.结论 人脸图像质量对人脸识别系统的识别性能具有显著影响,可以通过图像处理技术改善人脸图像质量进而提高人脸识别系统的识别准确性.其中,图像降噪处理可以显著提高人脸识别系统的识别性能,且比图像增强技术更适合于实际人像鉴定应用中的人脸识别系统识别性能增强.
**关键词:**人像鉴定;人脸识别;图像降噪;图像增强;人脸识别系统
**4.[期刊论文]**RGB-D防伪人脸识别系统设计
期刊:《数字技术与应用》 | 2021 年第 002 期
**摘要:**为解决常用的基于普通可见光图像的人脸识别技术常面临的缺陷,如抵抗照片、视频等伪造人脸攻击能力较弱、在光照不理想(如弱光照、侧强光)时所成的RGB图像质量差、识别对象不配合、识别姿态不理想等,所以本项目基于此设计了RGB-D防伪人脸识别系统,该系统数据基于深度图的RGB-D人脸识别,并使用云服务器进行数据处理,可以很好的解决因光照条件不足引起的识别失败问题,具有更好的识别准确率.
**关键词:**RGB-D;防伪;人脸识别
**5.[期刊论文]**基于Java的图书馆人脸识别系统设计与实现
期刊:《科技创新与应用》 | 2021 年第 007 期
**摘要:**文章提出了一种基于彩色图像的24位面部识别方法,图像处理的主要部分在软件中占据非常重要的位置,图像质量直接影响位置确定和识别精度.通过背光补偿,高斯平滑和二进制进行判别.在判别之前,经过互补光对图像施行处置,而后通过肤色得到大致的人脸.最后,依照面部固有眼睛的对称性断定面部,提升了定位和判别精度.最终该系统应用与图书馆人脸识别,并有很好的效果
**关键词:**Java;mysql;人脸识别系统
Python基于OpenCV的人脸表情识别系统[源码&部署教程]
1.项目背景
人脸表情识别是模式识别中一个非常重要却十分复杂的课题。首先对计算机人脸表情识别技术的研究背景及发展历程作了简单回顾。然后对近期人脸表情识别的方法进行了分类综述。通过对各种识别方法的分析与比较 ,提出了人脸表情识别技术实用化所需要考虑的几个方面 ,进而展望了今后人脸表情识别技术的发展方向。
2.识别效果展示
3.识别视频演示
Python基于OpenCV的人脸表情识别系统[源码&部署教程]_哔哩哔哩_bilibili
4.实现方法分析
人脸表情识别中需要运用人脸检测技术,识别人脸之后,再对表情图像做预处理(彩色图像灰度化、图像几何归一化和光照预处理),然后再对表情特征进行提取,分析,从而实现对表情的识别。国内外对于人脸的表情识别的研究近几年非常的多,涌现出了很多的算法,但对于表情的识别精度还是有待改进。
5.实现方法分析
人脸表情识别中需要运用人脸检测技术,识别人脸之后,再对表情图像做预处理(彩色图像灰度化、图像几何归一化和光照预处理),然后再对表情特征进行提取,分析,从而实现对表情的识别。国内外对于人脸的表情识别的研究近几年非常的多,涌现出了很多的算法,但对于表情的识别精度还是有待改进。
本设计报告采用人脸检测技术,并进行标记,图像灰度化,图像几何归一化等方法,通过提取出嘴巴,眼睛两个地方的大小变化进行判断。
5.算法流程图
6.fer2013人脸表情数据集简介
Fer2013人脸表情数据集由35886张人脸表情图片组成,其中,测试图(Training)28708张,公共验证图(PublicTest)和私有验证图(PrivateTest)各3589张,每张图片是由大小固定为48×48的灰度图像组成,共有7种表情,分别对应于数字标签0-6,具体表情对应的标签和中英文如下:0 anger 生气; 1 disgust 厌恶; 2 fear 恐惧; 3 happy 开心; 4 sad 伤心;5 surprised 惊讶; 6 normal 中性。
但是,数据集并没有直接给出图片,而是将表情、图片数据、用途的数据保存到csv文件中,如下图所示,
如上图所示,第一张图是csv文件的开头,第一行是表头,说明每列数据的含义,第一列表示表情标签,第二列即为图片数据,这里是原始的图片数据,最后一列为用途。
7.表情图片提取
知道数据结构以后,就好办了,使用pandas解析csv文件,(pandas的简单用法可以查看这篇博客:https://blog.csdn.net/rookie_wei/article/details/82974277 ),再将原始图片数据保存为jpg文件,并根据用途和标签标签进行分类,分别保存到对应文件夹下,代码比较简单,并且做了详细备注,直接给完整代码如下
代码实现
#encoding:utf-8
import pandas as pd
import numpy as np
import scipy.misc as sm
import os
emotions =
'0':'anger', #生气
'1':'disgust', #厌恶
'2':'fear', #恐惧
'3':'happy', #开心
'4':'sad', #伤心
'5':'surprised', #惊讶
'6':'normal', #中性
#创建文件夹
def createDir(dir):
if os.path.exists(dir) is False:
os.makedirs(dir)
def saveImageFromFer2013(file):
#读取csv文件
faces_data = pd.read_csv(file)
imageCount = 0
#遍历csv文件内容,并将图片数据按分类保存
for index in range(len(faces_data)):
#解析每一行csv文件内容
emotion_data = faces_data.loc[index][0]
image_data = faces_data.loc[index][1]
usage_data = faces_data.loc[index][2]
#将图片数据转换成48*48
data_array = list(map(float, image_data.split()))
data_array = np.asarray(data_array)
image = data_array.reshape(48, 48)
#选择分类,并创建文件名
dirName = usage_data
emotionName = emotions[str(emotion_data)]
#图片要保存的文件夹
imagePath = os.path.join(dirName, emotionName)
# 创建“用途文件夹”和“表情”文件夹
createDir(dirName)
createDir(imagePath)
#图片文件名
imageName = os.path.join(imagePath, str(index) + '.jpg')
sm.toimage(image).save(imageName)
imageCount = index
print('总共有' + str(imageCount) + '张图片')
if __name__ == '__main__':
saveImageFromFer2013('fer2013.csv')
运行完上面的代码后,得到3个文件夹,文件下有相应的表情的子文件夹
子文件夹下又有相应的图片
8.系统整合
9.完整源码&环境部暑视频教程&数据集&自定义UI界面
百度面包多搜索标题名即可下载源码
10.参考文献
- [1]人工心理模型驱动的人脸表情动画合成[J]. 谷学静,许广宾,熊伟,王志良. 计算机工程与应用. 2008(08)
- [2]基于CNN的人脸识别解压助眠微信小程序[J]. 胡文寒,李健喆,曾天伦,沈青. 电脑编程技巧与维护. 2022(08)
- [3]小波变换在人脸表情识别研究中的应用[J]. 崔景霞. 长春理工大学学报(自然科学版). 2011(03)
- [4]基于活动外观模型的人脸表情分析与识别[J]. 左坤隆,刘文耀. 光电子·激光. 2004(07)
- [5]人脸表情识别方法综述[J]. 陈俊. 中国集体经济. 2009(16)
- [6]基于语义属性的人脸表情识别新方法[J]. 于永斌,刘清怡,毛启容,詹永照. 小型微型计算机系统. 2016(02)
- [7]人脸表情特征提取方法的研究进展[J]. 乔明,陈亚军. 重庆工学院学报(自然科学版). 2008(06)
- [8]人脸表情自动识别技术研究进展[J]. 张家树,陈辉,李德芳,罗小宾,夏小东. 西南交通大学学报. 2005(03)
- [9]基于多群体遗传算法的人脸表情识别[J]. 朱娅妮,吴国华,杜加友. 杭州电子科技大学学报. 2013(01)
- [10]基于生成对抗网络的人脸表情数据增强方法[J]. 孙晓,丁小龙. 计算机工程与应用. 2020(04)
以上是关于基于OpenCV的人脸识别自助商店(源码&部署视频)的主要内容,如果未能解决你的问题,请参考以下文章