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年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!