先看一下ui见面
第一个是主页面,通过三个按钮去到人员管理,收集和识别三个页面。
接下来
直接上代码
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QPainter>
#include <QPaintEvent>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow),count(0)
{
ui->setupUi(this);
this->setWindowFlags(Qt::WindowCloseButtonHint);
this->setFixedSize(800,480);
//默认显示主页
ui->stackedWidget->setCurrentWidget(ui->page_main);
//识别界面定时器
timer_recogn = new QTimer(this);
connect(timer_recogn,&QTimer::timeout,this,&MainWindow::onRecognition);
timer_recogn->setInterval(1000/30);
//采集界面定时器
timer_collect = new QTimer(this);
connect(timer_collect,&QTimer::timeout,this,&MainWindow::onCollect);
timer_collect->setInterval(1000/30); //30分之一秒
//加载人脸分类器
cascade.load("../lbpcascade_frontalface_improved.xml");
//cascade.load("../haarcascade_frontalface_alt2.xml");
model = cv::face::createLBPHFaceRecognizer();
//model = cv::face::createEigenFaceRecognizer();
//创建人脸图像存放目录
QDir dir;
dir.mkdir(FACEPATH);
//数据库功能实现对象
mydb = new MyDatabase(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::createCSV()
{
//将目录下文件写入CSV文件中
QFile file(CSVFILE); //定义CSV文件路径
if(!file.open(QIODevice::WriteOnly))
{
QMessageBox::information(this, "提示", file.errorString());
return;
}
//创建一个QDir对象来处理指定的文件夹路径
QDir dir(FACEPATH);
QStringList list = dir.entryList(