#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, "错误", "保存人员虹膜特征码失败"); } }