基于qt和opencv实现人脸识别打卡系统_基于opencv+qt的人脸识别考勤系统设计

85 阅读3分钟

1、通过识别人脸来实现每日打开的记录

2、可以录制人员信息并且采集人脸信息进行特征模型训练

3、使用sqllite数据库来存储信息

二、所需环境和配置过程

1、开发环境QT5.12+opencv3.4.4+sqlite3

2、如果大家是在windows上运行的话只需要将opencv库放在FaceRecognition这个文件夹下然后按照以下方式配置即可

3、配置qt+opencv其实很简单,下面先看看在这个项目的文件目录吧

下面看看怎么在qt中配置吧

1、首先肯定要加入sql这个模块啦

2、然后配置opencv_contrib-3.4.4和opencv库,这些在我的源码中都已经配置好了这里就说面一下

#配置源码
SOURCES += \
        main.cpp \
        admingui.cpp \
    src/bif.cpp \
    src/eigen_faces.cpp \
    src/face_alignment.cpp \
    src/face_basic.cpp \
    src/facemark.cpp \
    src/facemarkAAM.cpp \
    src/facemarkLBF.cpp \
    src/facerec.cpp \
    src/fisher_faces.cpp \
    src/getlandmarks.cpp \
    src/lbph_faces.cpp \
    src/mace.cpp \
    src/predict_collector.cpp \
    src/regtree.cpp \
    src/trainFacemark.cpp \
    inputfacethread.cpp \
    facetrainthread.cpp \
    facelogin.cpp \
    showtable.cpp

#配置头文件
HEADERS += \
        admingui.h \
    face/bif.hpp \
    face/face_alignment.hpp \
    face/facemark.hpp \
    face/facemark_train.hpp \
    face/facemarkAAM.hpp \
    face/facemarkLBF.hpp \
    face/facerec.hpp \
    face/mace.hpp \
    face/predict_collector.hpp \
    face.hpp \
    src/face_alignmentimpl.hpp \
    src/face_utils.hpp \
    src/precomp.hpp \
    inputfacethread.h \
    facetrainthread.h \
    facelogin.h \
    showtable.h

#配置opencv库
INCLUDEPATH+=../opencv64/include\
             ../opencv64/include/opencv\
             ../opencv64/include/opencv2\

LIBS += ../opencv64/x64/mingw/lib/libopencv_world344.dll.a

3、下面最关键的地方,(在这里出过几次问题),配置opencv可执行文件的路径

按照图示地方在path中加上opencv的bin路径,在我的工程中路径是../opencv64/x64/mingw/bin

到这里配置工作都完成了

三、实现过程

首先我设计了三个界面分别完成打卡,训练,查表三个功能

1、打开界面及功能的设计

界面如下

点击蓝色的人脸按钮即可开机摄像头开始识别人脸,下面说说这个功能的代码部分

这里我是使用了一个定时器来实现摄像头摄像功能

void FaceLogin::on_recfaceBt_clicked()
{
    //人脸识别
    //打开默认摄像头
    cap = cv::VideoCapture(0);
    if (!cap.isOpened())
    {
        cout<<"open failed"<<endl;
        return;
    }
    qDebug()<<"open success"<<endl;
    //训练好的文件名称
    cascade.load("../AdminGUI/haarcascade_frontalface_alt2.xml");
    model = face::FisherFaceRecognizer::create();
    //1.加载训练好的分类器
    model->read("../AdminGUI/datamodel/MyFaceFisherModel.xml");// opencv2用load

    //开启定时器
    connect(&mtime,SIGNAL(timeout()),this,SLOT(faceRecog()));
    mtime.start(25);
}

2、模型训练

训练模型用到了opencv的Facerecognizer类。opencv中所有的人脸识别模型都是来源于这个类FaceRecognizer这个类目前包含三种人脸识别方法:基于PCA变换的人脸识别(EigenFaceRecognizer)、基于Fisher变换的人脸识别(FisherFaceRecognizer)、基于局部二值模式的人脸识别(LBPHFaceRecognizer)。

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。 img img

如果你需要这些资料,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!