制作过程
- 最新更新 其他版本基于retinaface,卷神经网络余弦相似度人脸匹配
- 本文章版本预览
-
- 点击下载源代码
- 视频效果
- 一.界面设计 使用Qt Designer(源代码内有设计文件ui):
- 二.人脸检测模块 opencv-dnn
- 三.人脸识别模块 LBPHFaceRecognizer
- 四.数据库 sqlite
最新更新 其他版本基于retinaface,卷神经网络余弦相似度人脸匹配 文章:
retinaface+arcfae实现的人脸系统 人脸考勤 人脸打卡 宿舍管理 人脸信息管理系统
不同版本打包程序:
人脸识别信息系统+数据库+ui设计+全代码
人脸识别+活体检测+信息查询.
人脸识别 人脸眼镜贴图 人脸跟踪
神经网络人脸考勤系统,信息录入,考勤
人脸识别 学生信息登记系统 pyqt5 opencv sql
qq群686070107
本文章版本预览 点击下载源代码 视频效果
人脸识别 宿舍门禁系统( pyqt opencv带数据库)
【人脸识别|人脸识别 宿舍门禁系统(python qt opencv带数据库)】
一.界面设计 使用Qt Designer(源代码内有设计文件ui):
文章图片
文章图片
二.人脸检测模块 opencv-dnn OpenCV在DNN模块中提供了基于残差SSD网络训练的人脸检测模型,该模型分别提供了tensorflow版本,caffe版本,torch版本模型文件。
其中tensorflow版本的模型做了更加进一步的压缩优化,大小只有2MB左右,非常适合移植到移动端使用,实现人脸检测功能,而caffe版本的是fp16的浮点数模型,精准度更好。
对比传统人脸检测,同样一张图像,在OpenCV HAAR与LBP级联检测器中必须通过不断调整参数才可以检测出全部人脸,而通过使用该模型,基本在Python语言中基于OpenCV后台的推断,在25毫秒均可以检测出结果,网络支持输入size大小为300x300。
def getface(img,net):
# 置信度参数,高于此数才认为是人脸,可调
confidence = 0.3
(h, w) = img.shape[:2]# 获取图像的高和宽,用于画图
blob = cv2.dnn.blobFromImage(cv2.resize(img, (300, 300)), 1.0,(300, 300), (104.0, 177.0, 123.0))
# blobFromImage待研究
net.setInput(blob)
# 预测结果
detections = net.forward()
maxFace = []
# 在原图加上标签和框
for i in range(0, detections.shape[2]):
# 获得置信度
res_confidence = detections[0, 0, i, 2]
# 过滤掉低置信度的像素
if res_confidence > confidence:
# 获得框的位置
box = detections[0, 0, i, 3:7] * np.array([w, h, w, h])
(startX, startY, endX, endY) = box.astype("int")
startX = 0 if startX<0 else startX
startY = 0 if startY<0 else startY
if endX>w:
return
if endY>h:
return
print(startX, startY, endX, endY)
return startX, startY, endX, endY
三.人脸识别模块 LBPHFaceRecognizer 基于LBP算子的人脸识别算法:
LBP被运用于计算机人脸识别领域时,提取出来的人脸特征通常是以LBP直方图向量进行表达的。
1. 对预处理后的人脸图像进行分块
2. 对分块后的各小块图像区域进行LBP特征提取变换
3. 使用LBP直返图向量作为人脸特征的描述。
一般分块数越多,人脸表达的效果就会越好,但是分块数越多,会直接导致特征向量维数的增加,会增加计算的复杂度。对每个分块计算LBP值的直方图,然后将所有分块直方图进行连接得到最终的直方图特征向量,这个特征向量代表原来的人脸图像,可以用来描述整体图像。
文章图片
对于这个融合的直方图,我们进行特征分类。 如果训练样本数量越大,分类的效果也会越好,
LBPH的预测进程
预测进程就比较简单了,首先将待查询点图象进行lbp编码并生成空间直方图,然后线性暴力的计算直方图的距离,采用基于直方图的相似性度量的最近邻分类方法来分类
id, lbphconfidence = LBPH.predict(gray) #识别人脸
官方文档
四.数据库 sqlite
推荐阅读
- 记录|基于ubuntu+opencv+qt实现的简单人脸识别
- opencv|OpenCV(03图像的算数运算)
- CV|opencv:彩色图像到灰度图像的转换与保存
- opencv|OpenCV(02基础知识和绘制图形)
- opencv|OpenCV(01图片&视频的加载显示)
- alot物联网工程师|四.OpenCv图像的基本变换
- OAK使用教程|如何将OAK相机当做网络摄像头使用()
- OAK使用教程|如何在树莓派上使用OAK相机()
- OAK应用案例|【开源】使用PhenoCV-WeedCam进行更智能、更精确的杂草管理