Newer
Older
AppendIrisCodeUtils / MainWindow.cpp
#ifdef _MSC_VER
#pragma execution_character_set("utf-8")    // Qt VS 中文兼容(UTF-8)
#endif


#include "MainWindow.h"
#include "ui_MainWindow.h"

#include <QDebug>
#include <QFileDialog>
#include <QMessageBox>

#include "dao/util/ConnectionManager.h"
#include "dao/IrisDataDao.h"
#include "casic/iris/CasicIrisInfo.h"


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    connect(&personForm, &PersonListForm::personRecordSelected, this, &MainWindow::onPersonSelectedHandler);
}

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


void MainWindow::on_btnPerson_clicked()
{
    personForm.setWindowModality(Qt::WindowModality::ApplicationModal);
    personForm.initPersonListDialog();
    personForm.show();
}

void MainWindow::on_btnLeftCode_clicked()
{
    QString selectedFile = QFileDialog::getOpenFileName(this, "选择文件", QDir::currentPath());
    if (selectedFile.isEmpty() == false)
    {
        ui->labelLeftCode->setText(selectedFile);
    }
}

void MainWindow::on_btnLeftMask_clicked()
{
    QString selectedFile = QFileDialog::getOpenFileName(this, "选择文件", QDir::currentPath());
    if (selectedFile.isEmpty() == false)
    {
        ui->labelLeftMask->setText(selectedFile);
    }
}

void MainWindow::on_btnRightCode_clicked()
{
    QString selectedFile = QFileDialog::getOpenFileName(this, "选择文件", QDir::currentPath());
    if (selectedFile.isEmpty() == false)
    {
        ui->labelRightCode->setText(selectedFile);
    }
}

void MainWindow::on_btnRightMask_clicked()
{
    QString selectedFile = QFileDialog::getOpenFileName(this, "选择文件", QDir::currentPath());
    if (selectedFile.isEmpty() == false)
    {
        ui->labelRightMask->setText(selectedFile);
    }
}

void MainWindow::on_btnLeftIris_clicked()
{
    QMessageBox::information(this, "提示", "敬请期待");
}

void MainWindow::on_btnRightIris_clicked()
{
    QMessageBox::information(this, "提示", "敬请期待");
}

void MainWindow::onPersonSelectedHandler(QString personId, QString name, QString deptName)
{
    ui->labelPersonId->setText(personId);
    ui->labelName->setText(name);
    ui->labelDept->setText(deptName);

    personForm.hide();
}

void MainWindow::on_btnSubmit_clicked()
{
    if (ui->labelPersonId->text() == "") {
        QMessageBox::critical(this, "错误", "人员必须选择");
        return;
    }

    if (ui->labelLeftCode->text() == "") {
        QMessageBox::critical(this, "错误", "必须选择左眼虹膜编码图像");
        return;
    }

    if (ui->labelLeftMask->text() == "") {
        QMessageBox::critical(this, "错误", "必须选择左眼虹膜掩码图像");
        return;
    }

    if (ui->labelRightCode->text() == "") {
        QMessageBox::critical(this, "错误", "必须选择右眼虹膜编码图像");
        return;
    }

    if (ui->labelRightMask->text() == "") {
        QMessageBox::critical(this, "错误", "必须选择右眼虹膜掩码图像");
        return;
    }

    IrisDataDao irisDao;

    CasicIrisFeature leftFeature;
    leftFeature.irisId = 1;
    leftFeature.personId = ui->labelPersonId->text();
    leftFeature.irisCode = cv::imread(std::string(ui->labelLeftCode->text().toLocal8Bit()), 0);
    leftFeature.maskNorm = cv::imread(std::string(ui->labelLeftMask->text().toLocal8Bit()), 0);

    CasicIrisInfo irisInfo;
    irisInfo.irisCode = leftFeature.irisCode;
    irisInfo.maskNorm = leftFeature.maskNorm;
    leftFeature.irisFeatureCode = casic::iris::CasicIrisInterface::getInstance().extractFeature(irisInfo);

    CasicIrisFeature rightFeature;
    rightFeature.irisId = 2;
    rightFeature.personId = ui->labelPersonId->text();
    rightFeature.irisCode = cv::imread(std::string(ui->labelRightCode->text().toLocal8Bit()), 0);
    rightFeature.maskNorm = cv::imread(std::string(ui->labelRightMask->text().toLocal8Bit()), 0);

    CasicIrisInfo irisInfo2;
    irisInfo2.irisCode = rightFeature.irisCode;
    irisInfo2.maskNorm = rightFeature.maskNorm;
    rightFeature.irisFeatureCode = casic::iris::CasicIrisInterface::getInstance().extractFeature(irisInfo2);

    QVariantMap obj;
    obj.insert("person_id", ui->labelPersonId->text());
    obj.insert("left_iris_code1", leftFeature.irisFeatureCode);
    obj.insert("right_iris_code1", rightFeature.irisFeatureCode);
    QString succId = irisDao.save(obj);
    if (succId != "-1") {
        QMessageBox::information(this, "成功", "保存人员虹膜特征码成功");

        ui->labelName->setText("");
        ui->labelDept->setText("");
        ui->labelPersonId->setText("");
        ui->labelLeftCode->setText("");
        ui->labelLeftMask->setText("");
        ui->labelRightCode->setText("");
        ui->labelRightMask->setText("");
    } else {
        QMessageBox::critical(this, "错误", "保存人员虹膜特征码失败");
    }
}