Newer
Older
CasicBioRecNew / RecognizeResultForm.cpp
Tan Yue on 2 Jun 2022 3 KB 20220602 人脸识别优化整合
#include "RecognizeResultForm.h"
#include "ui_RecognizeResultForm.h"

RecognizeResultForm::RecognizeResultForm(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::RecognizeResultForm)
{
    ui->setupUi(this);
    ui->labVideo->hide();

    // 加载css文件设置控件样式
    QFile file(QApplication::applicationDirPath() + "/qss/recognize.css");
    if (file.open(QFile::ReadOnly))
    {
        QString qssStr = QLatin1String(file.readAll());
        this->setStyleSheet(qssStr);
        file.close();
    }
}

RecognizeResultForm::~RecognizeResultForm()
{
    delete ui;
}

void RecognizeResultForm::startWorkingRecognize()
{
    // 开始人脸识别
    ProMemory::getInstance().faceRecogPro->setWorking(true);

    // 将界面切换到识别界面 RecognizeResultForm
    ProMemory::getInstance().faceCam->openFaceCamera(SettingConfig::getInstance().FACE_FRAME_INTERVAL);

    // 1人脸图像显示的容器
    ui->labVideo->resize(1280, 720);
    ui->labVideo->move(0, 80);
    ui->labVideo->raise();
    ui->labVideo->show();

    ui->labTitle->raise();
    ui->labTitle->show();
    ui->labTitle->setText("正在识别");
    ui->labTitle->setStyleSheet("background: rgba(72, 80, 170, 0.75)");
}


void RecognizeResultForm::drawImageOnHomeForm(QImage imageDisp)
{
    if (ui->labVideo->isVisible() == true)
    {
        ui->labVideo->setPixmap(QPixmap::fromImage(imageDisp));
    }
}

void RecognizeResultForm::showRecogFailure()
{
    SpeakerUtil::getInstance().speak("识别失败,请重试");
    ui->labVideo->hide();
    ui->labTitle->hide();
    ui->widgetSucc->hide();

    ui->widgetFail->raise();
    ui->widgetFail->show();

    QTimer::singleShot(SettingConfig::getInstance().FAILURE_TIPS_LAST, [=](){
        emit backToHomeAndWait();
        CasicFaceRecState::getInstance().state = CasicFaceRecState::REC_NOT_START;
        ui->labBackground->raise();
    });
}
void RecognizeResultForm::showRecognizeResult(QString personId)
{
    SpeakerUtil::getInstance().speak("识别成功");
    ui->labVideo->hide();
    ui->labTitle->hide();
    ui->widgetFail->hide();

    // 查询并显示人员信息
    SysPersonDao personDao;
    QVariantMap personInfo = personDao.findRecordById(personId);
    ui->labNameText->setText("");
    ui->labNameText->setText(personInfo.value("name").toString());
    ui->labGenderText->setText("");
    ui->labGenderText->setText(CacheManager::getInstance().getGenderName().value(personInfo.value("gender").toString()).toString());
    ui->labDeptText->setText("");
    ui->labDeptText->setText(personInfo.value("deptname").toString());
    ui->labTimeText->setText("");
    ui->labTimeText->setText(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"));

    FaceDataImgDao faceImgDao;
    QVariantMap photoImage = faceImgDao.findRecordByPersonId(personId);
    if (photoImage.isEmpty() == false)
    {
        QString imageData = photoImage.find("face_image")->toString();
        QImage image;
        image.loadFromData(QByteArray::fromBase64(imageData.toLatin1()));
        image = image.scaledToHeight(280, Qt::SmoothTransformation);
        ui->labPhotot->setPixmap(QPixmap::fromImage(image));
    }

    ui->widgetSucc->raise();
    ui->widgetSucc->show();

    QTimer::singleShot(SettingConfig::getInstance().SUCCESS_TIPS_LAST, [=](){
        emit backToHomeAndWait();
        CasicFaceRecState::getInstance().state = CasicFaceRecState::REC_NOT_START;
        ui->labBackground->raise();
    });
}