人脸识别|人脸识别 宿舍门禁系统(python qt opencv带数据库)


制作过程

  • 最新更新 其他版本基于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): 人脸识别|人脸识别 宿舍门禁系统(python qt opencv带数据库)
文章图片

人脸识别|人脸识别 宿舍门禁系统(python qt opencv带数据库)
文章图片

二.人脸检测模块 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值的直方图,然后将所有分块直方图进行连接得到最终的直方图特征向量,这个特征向量代表原来的人脸图像,可以用来描述整体图像。
人脸识别|人脸识别 宿舍门禁系统(python qt opencv带数据库)
文章图片

对于这个融合的直方图,我们进行特征分类。 如果训练样本数量越大,分类的效果也会越好,
LBPH的预测进程
预测进程就比较简单了,首先将待查询点图象进行lbp编码并生成空间直方图,然后线性暴力的计算直方图的距离,采用基于直方图的相似性度量的最近邻分类方法来分类
id, lbphconfidence = LBPH.predict(gray) #识别人脸

官方文档
四.数据库 sqlite

    推荐阅读