人脸识别考勤系统
Chalametroye
这个作者很懒,什么都没留下…
展开
-
2-6考勤终端网络编程实现断线重连
序列化是指将数据结构或对象状态转换为可以存储或传输的一种格式的过程。反序列化是序列化的逆过程,即将序列化后的数据恢复成原来的对象或数据结构。是Qt库提供的一个类,它允许以二进制格式读写数据,包括基本类型如整数、浮点数、字符串,以及复杂类型如数组、列表、地图和自定义对象。因此,在Qt应用程序中,将数据流绑定到套接字是一种常见的做法,它使得开发人员能够更加专注于应用程序的逻辑,而不是网络通信的细节。序列化和反序列化是计算机科学中用于数据存储和传输的重要概念,尤其当涉及到复杂数据结构时,这两个过程变得尤为重要。原创 2024-08-20 20:34:36 · 15 阅读 · 0 评论 -
2-23. 服务器端用QTabWidget整合
整合为一个界面,将做好的各个功能河道一起,提升为编写的类。原创 2024-07-24 01:06:44 · 303 阅读 · 0 评论 -
2-22. 考勤数据实时录入到数据库
在attendanceWin.cpp的recv_faceid()函数添加数据写入数据库的功能。原创 2024-07-24 00:43:51 · 377 阅读 · 0 评论 -
2-21. 考勤信息和员工信息查询模块设计与实现
在SelcetWin.h添加数据库头文件与相应模型指针。在SelectWin.cpp中声明模型。新建员工信息查询窗口。原创 2024-07-24 00:21:34 · 395 阅读 · 0 评论 -
2-20. 考勤机终端json数据接收与json解析和显示
接收数据为Ison数据,利用Json解析,添加Json的三个头文件。此时,认证成功框隐藏,数据解析后,头像显示时出现认证成功。将考勤系统的lineEdit全都重新命名。发送人脸数据之后,保存矩形框内的人脸数据。解析数据后在头文件定义保存人脸的对象。其他问题,将图片大小与窗口大小适配。原创 2024-07-23 21:24:15 · 158 阅读 · 0 评论 -
2-19. 服务器优化用线程实现人脸识别
在qfaceobject.cpp中用emit发送faceid,并且判断人脸相似度可信度,可信度大于0.85才发送,小于不认为是该人脸,发送-1。在attendancewin.cpp中关联send_faceid,定义接收人脸id函数recv_faceid,将其定义为槽函数。在QT中Mat类型数据不可以直接使用,需要在主函数中声明,并在主函数添加opencv头文件。线程需要信号触发,在attendancewin.h头文件中声明信号。查询到faceid发送,需要再qfaceobject.h定义信号。原创 2024-07-23 01:39:45 · 145 阅读 · 0 评论 -
2-18. 考勤机人脸采集发送次数优化
flag初始为0,检测到人脸++,大于2时发送数据,发送之后置为-2,重新进行flag计数,大于2再进行发送。人脸进入检测框后隔一段时间,等人脸稳定下来后再发送。设置标志,看是否是同一个人脸进入到识别区域。构造函数内声明flag为0。原创 2024-07-22 23:33:49 · 134 阅读 · 0 评论 -
2-17. 识别人脸id查询数据个人信息
数据传输过快,一直在处理查询,查询函数阻塞,画面无法一直刷新。在faceattendance.cpp中添加接收相关定义。attendancewin.h添加数据库头文件。定义接收数据的函数,并在头文件声明为槽函数。从数据库查询faceid对应的个人信息。在构造函数中给sql模型绑定表格。服务器端查询人脸对应信息。原创 2024-07-22 22:51:36 · 176 阅读 · 0 评论 -
2-16. 接收客户端人脸数据并识别出人脸ID
attendancewin.h添加对象。原创 2024-07-22 01:09:16 · 86 阅读 · 0 评论 -
2-15. 员工信息注册模块头像采集
registerwin.h文件添加定时器事件,设置定时器id方便管理。registerwin.h添加摄像头头文件,设置摄像头对象。可以将摄像头数据保存在头文件做全局变量。在registerwin.cpp中定义。在registerwin.cpp中定义。原创 2024-07-22 00:37:35 · 202 阅读 · 0 评论 -
2-14. 员工信息录入到数据库
2. qdebug打印faceid查看faceid,发现faceid都为0,识别不了人脸,说明faceobject出现问题。3.检查faceobject模块导入的seetaface数据库 ,创建对象初始化之后还需要导入已有的人脸数据库。主函数添加(在创建数据库之前),目前会显示两个界面,用于测试相应功能,后续嵌入到主界面。遇到困难:将头像保存到固定路径下命名都为0.jpg。该界面设计为widget类型,可以嵌入到主界面。1.先检查是否有语法逻辑错误导致无法注册。遇到困难:注册模块注册人脸失败。原创 2024-07-21 01:51:27 · 100 阅读 · 0 评论 -
2-13. 员工注册界面设计
原创 2024-07-20 16:23:21 · 65 阅读 · 0 评论 -
2-12. QT数据库和表格创建
主函数创建数据库及数据表。原创 2024-07-20 15:52:55 · 108 阅读 · 0 评论 -
2-11. 考勤服务器数据表格设计
员工信息表:员工编号,姓名,性别,生日,地址,电话,人脸id,头像。用qt自带的sqlite3数据库。员工编号,考勤时间,备注。原创 2024-07-20 01:33:41 · 218 阅读 · 0 评论 -
2-10. 人脸识别模块封装-注册和查询
qfaceobject.h 添加seetaface头文件。添加C++类文件,将模块封装成类。可以选cpu或者gpu。原创 2024-07-20 01:21:16 · 215 阅读 · 0 评论 -
2-4. opencv检测人脸并实时显示 &&2-5. 人脸检测和人脸框显示与跟踪
1. 导入级联分类器文件cascade.load2. 矩形框图检测人脸cascade.detectMultiScale(grayImage, faceRects);3. 转为灰度图加快检测速度cvtColor(SrcImage, grayImage, COLOR_BGR2GRAY);参考博文socket参考博文tcp编程DMA将数据流()绑定到套接字(QTcpSocket或其他网络套接字)的主要目的是为了方便地在套接字上序列化和反序列化复杂的数据结构。原创 2024-07-19 22:21:27 · 1744 阅读 · 0 评论 -
2-3. 摄像头数据在QT界面上实时显示
1. QT定时器事件2. Mat采集数据,读取一帧数据3. opencv的Mat格式数据(BGR)转换为QT的QImage(RGB)4. 显示图像。原创 2024-07-17 18:04:17 · 23 阅读 · 0 评论