#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <windows.h>
#define REG_IMG_QUALITY 70
#define VRF_IMG_QUALITY 50
bool g_CapturedR1, g_CapturedR2, g_CapturedV1;
int SecurityLevel[9]= {SL_LOWEST, SL_LOWER, SL_LOW, SL_BELOW_NORMAL, SL_NORMAL, SL_ABOVE_NORMAL, SL_HIGH, SL_HIGHER, SL_HIGHEST};
MainWindow
::MainWindow(QWidget *parent
) : ui(new Ui::MainWindow)
{
ui->setupUi(this);
m_DibCtl = NULL;
m_ImgBuf = NULL;
m_FetBuf1 = NULL;
m_FetBuf2 = NULL;
m_FetBufM = NULL;
m_ImageWidth = 0;
m_ImageHeight = 0;
m_MaxTemplateSize = 0;
g_CapturedR1 = g_CapturedR2 = g_CapturedV1 = false;
ui->m_CBDevName->addItem("USB FDU03");
ui->m_CBDevName->addItem("USB FDU02");
ui->m_CBDevName->addItem("Parallel FDP02");
ui->m_TemplateFormat->addItem("SG400");
ui->m_TemplateFormat->addItem("ANSI378");
ui
->m_SecureLevel
->addItems
(QStringList()<<
"1 Lowest"<<
"2 Lower"<<
"3 Low"<<
"4 Below Normal"<<
"5 Normal"<<
"6 Above Normal"<<
"7 High"<<
"8 Higher"<<
"9 Highest");
ui->cR2lbl->setScaledContents(true);
ui->cR1lbl->setScaledContents(true);
ui->m_TemplateFormat->setCurrentIndex(0);
ui->m_SecureLevel->setCurrentIndex(4);
DWORD err = SGFPM_Create(&m_hFPM);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_Initbutton_clicked()
{
DWORD err;
DWORD devname = SG_DEV_FDU03;
DWORD devid = 255; // Auto detect
devstr = ui->m_CBDevName->currentText();
if (devstr == "USB FDU03") // USB: FDU03
devname = SG_DEV_FDU03;
else if (devstr == "USB FDU02") // USB: FDU02
devname = SG_DEV_FDU02;
else if (devstr == "Parallel FDP02") // USB: FDP02
devname = SG_DEV_FDP02;
err = SGFPM_Init(m_hFPM, devname);
if (err != SGFDX_ERROR_NONE)
{
this
->statusBar
()->showMessage
( "Initialization Failed. Error = "+QString::number( err
));
return;
}
err = SGFPM_OpenDevice(m_hFPM, devid);
if (err != SGFDX_ERROR_NONE)
{
this
->statusBar
()->showMessage
( "OpenDevice() failed. Error = "+QString::number( err
));
return;
}
SGDeviceInfoParam device_info;
err = SGFPM_GetDeviceInfo(m_hFPM, &device_info);
if (err != SGFDX_ERROR_NONE)
{
this
->statusBar
()->showMessage
( "GetDeviceInfo() failed. Error = "+QString::number( err
));
return;
}
m_ImageWidth = device_info.ImageWidth;
m_ImageHeight = device_info.ImageHeight;
if (m_ImgBuf == NULL)
m_ImgBuf = new BYTE[m_ImageWidth*m_ImageHeight];
// Initialize minutiae buffer
err = SGFPM_GetMaxTemplateSize(m_hFPM, &m_MaxTemplateSize);
if (err != SGFDX_ERROR_NONE)
{
this
->statusBar
()->showMessage
( "GetMaxTemplateSize() failed. Error = "+QString::number( err
));
}
if (m_FetBuf1)
delete [] m_FetBuf1;
m_FetBuf1 = new BYTE[m_MaxTemplateSize];
if (m_FetBuf2)
delete [] m_FetBuf2;
m_FetBuf2 = new BYTE[m_MaxTemplateSize];
if (m_FetBufM)
delete [] m_FetBufM;
m_FetBufM = new BYTE[m_MaxTemplateSize];
this->statusBar()->showMessage( "Initialization SuccessÄŸ");
ui->m_CapBtnV1->setEnabled(true);
ui->m_ConfigBtn->setEnabled(true);
ui->BtnCaptureR1->setEnabled(true);
ui->BtnCaptureR2->setEnabled(true);
ui->m_FormatBtn->setEnabled(true);
}
void MainWindow::on_BtnCaptureR1_clicked()
{
// Capture fingerprint
qDebug()<<"Capturing";
DWORD err = SGFPM_GetImageEx(m_hFPM, m_ImgBuf, 5000, NULL, REG_IMG_QUALITY);
if (err == SGFDX_ERROR_NONE)
{
cImage
= QImage((const unsigned char*)(m_ImgBuf
), m_ImageWidth, m_ImageHeight,
QImage::Format_Indexed8);
cPixmap.convertFromImage(cImage);
ui->cR1lbl->setPixmap(cPixmap);
DWORD img_qlty;
err = SGFPM_GetImageQuality(m_hFPM, m_ImageWidth, m_ImageHeight, m_ImgBuf, &img_qlty);
// // Extract Fingerprint
err = SGFPM_CreateTemplate(m_hFPM, 0, m_ImgBuf, m_FetBuf1);
if (err == SGFDX_ERROR_NONE)
{
g_CapturedR1 = true;
this->statusBar()->showMessage("The first template is created. Image Quality= "+ img_qlty);
}
else{
this
->statusBar
()->showMessage
(QString::fromUtf8(" CreateTemplate() failed. Error = ")+ QString::number(err
));
}
}
else{
this
->statusBar
()->showMessage
(QString("The captured image is not good. Try again...Err:")+QString::number(err
));
}
if (g_CapturedR1 && g_CapturedR2)
{
ui->m_RegisterBtn->setDisabled(false);
}
// UpdateData(false);
}
void MainWindow::on_BtnCaptureR2_clicked()
{
// Capture fingerprint
DWORD img_qlty;
DWORD err = SGFPM_GetImageEx(m_hFPM, m_ImgBuf, 5000, NULL, REG_IMG_QUALITY);
if (err == SGFDX_ERROR_NONE)
{
cImage
= QImage((const unsigned char*)(m_ImgBuf
), m_ImageWidth, m_ImageHeight,
QImage::Format_Indexed8);
cPixmap.convertFromImage(cImage);
ui->cR2lbl->setPixmap(cPixmap);
err = SGFPM_GetImageQuality(m_hFPM, m_ImageWidth, m_ImageHeight, m_ImgBuf, &img_qlty);
// Extract Fingerprint.
err = SGFPM_CreateTemplate(m_hFPM, 0, m_ImgBuf, m_FetBuf2);
if (err == SGFDX_ERROR_NONE)
{
this->statusBar()->showMessage("The second template is created. Image Quality= "+ img_qlty);
g_CapturedR2 = true;
}
else
{
this
->statusBar
()->showMessage
("CreateTemplate() failed. Error = "+ QString::number(err
));
}
}
else
{
this->statusBar()->showMessage("The captured image is not good. Try again...");
}
if (g_CapturedR1 && g_CapturedR2)
{
ui->m_RegisterBtn->setDisabled(false);
}
}
void MainWindow::on_m_CapBtnV1_clicked()
{
// Capture fingerprint
DWORD img_qlty;
DWORD err = SGFPM_GetImageEx(m_hFPM, m_ImgBuf, 5000, ui->cv1lbl->winId(), VRF_IMG_QUALITY);
if (err == SGFDX_ERROR_NONE)
{
err = SGFPM_GetImageQuality(m_hFPM,m_ImageWidth, m_ImageHeight, m_ImgBuf, &img_qlty);
// Extract Fingerprint.
err = SGFPM_CreateTemplate(m_hFPM, 0, m_ImgBuf, m_FetBufM);
if (err == SGFDX_ERROR_NONE)
{
g_CapturedV1 = true;
this
->statusBar
()->showMessage
("The template for verification and identification. Image Quality="+QString::number( img_qlty
));
}
else
{
this
->statusBar
()->showMessage
("CreateTemplate() failed. Error = "+QString::number(err
));
}
}
else
{
this->statusBar()->showMessage("The captured image is not good. Try again...");
}
if (g_CapturedR1 && g_CapturedR2 && g_CapturedV1)
{
ui->m_VerifyBtn->setDisabled(false);
ui->m_IdentifyBtn->setDisabled(false);
}
}
void MainWindow::on_m_FormatBtn_clicked()
{
WORD template_format;
if (ui->m_TemplateFormat->currentIndex() == 0)
template_format = TEMPLATE_FORMAT_SG400;
else
template_format = TEMPLATE_FORMAT_ANSI378;
DWORD err = SGFPM_SetTemplateFormat(m_hFPM, template_format);
if (err == SGFDX_ERROR_NONE){
//this->statusBar()->showMessage("SetTemplateFormat() Success");
}
else
{
//this->statusBar()->showMessage("SetTemplateFormat() failed. Error = "+ QString::number(err));
}
}
void MainWindow::on_m_RegisterBtn_clicked()
{
if ((m_FetBuf1 == NULL) || (m_FetBuf2 == NULL))
return;
BOOL matched;
DWORD err = SGFPM_MatchTemplate(m_hFPM, m_FetBuf1, m_FetBuf2, SecurityLevel[ui->m_SecureLevel->currentIndex()], &matched);
if ((err == SGFDX_ERROR_NONE) && matched)
{
QFile dFile
(ui
->uName
->text
()+".min");
{
dFile.write((const char *)m_FetBuf1,400);
dFile.write((const char *)m_FetBuf2,400);
dFile.close();
}
DWORD match_score;
err = SGFPM_GetMatchingScore(m_hFPM, m_FetBuf1, m_FetBuf2, &match_score);
this->statusBar()->showMessage("Registration Success : Matching Score ="+ match_score);
}
else{
this->statusBar()->showMessage("Registration Fail");
}
}
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <windows.h>
#define REG_IMG_QUALITY 70
#define VRF_IMG_QUALITY 50
bool g_CapturedR1, g_CapturedR2, g_CapturedV1;
int SecurityLevel[9]= {SL_LOWEST, SL_LOWER, SL_LOW, SL_BELOW_NORMAL, SL_NORMAL, SL_ABOVE_NORMAL, SL_HIGH, SL_HIGHER, SL_HIGHEST};
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
m_DibCtl = NULL;
m_ImgBuf = NULL;
m_FetBuf1 = NULL;
m_FetBuf2 = NULL;
m_FetBufM = NULL;
m_ImageWidth = 0;
m_ImageHeight = 0;
m_MaxTemplateSize = 0;
g_CapturedR1 = g_CapturedR2 = g_CapturedV1 = false;
ui->m_CBDevName->addItem("USB FDU03");
ui->m_CBDevName->addItem("USB FDU02");
ui->m_CBDevName->addItem("Parallel FDP02");
ui->m_TemplateFormat->addItem("SG400");
ui->m_TemplateFormat->addItem("ANSI378");
ui->m_SecureLevel->addItems(QStringList()<<"1 Lowest"<<"2 Lower"<<"3 Low"<<"4 Below Normal"<<"5 Normal"<< "6 Above Normal"<<"7 High"<<"8 Higher"<< "9 Highest");
ui->cR2lbl->setScaledContents(true);
ui->cR1lbl->setScaledContents(true);
ui->m_TemplateFormat->setCurrentIndex(0);
ui->m_SecureLevel->setCurrentIndex(4);
DWORD err = SGFPM_Create(&m_hFPM);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_Initbutton_clicked()
{
DWORD err;
DWORD devname = SG_DEV_FDU03;
DWORD devid = 255; // Auto detect
QString devstr;
devstr = ui->m_CBDevName->currentText();
if (devstr == "USB FDU03") // USB: FDU03
devname = SG_DEV_FDU03;
else if (devstr == "USB FDU02") // USB: FDU02
devname = SG_DEV_FDU02;
else if (devstr == "Parallel FDP02") // USB: FDP02
devname = SG_DEV_FDP02;
err = SGFPM_Init(m_hFPM, devname);
if (err != SGFDX_ERROR_NONE)
{
this->statusBar()->showMessage( "Initialization Failed. Error = "+QString::number( err));
return;
}
err = SGFPM_OpenDevice(m_hFPM, devid);
if (err != SGFDX_ERROR_NONE)
{
this->statusBar()->showMessage( "OpenDevice() failed. Error = "+QString::number( err));
return;
}
SGDeviceInfoParam device_info;
err = SGFPM_GetDeviceInfo(m_hFPM, &device_info);
if (err != SGFDX_ERROR_NONE)
{
this->statusBar()->showMessage( "GetDeviceInfo() failed. Error = "+QString::number( err));
return;
}
m_ImageWidth = device_info.ImageWidth;
m_ImageHeight = device_info.ImageHeight;
if (m_ImgBuf == NULL)
m_ImgBuf = new BYTE[m_ImageWidth*m_ImageHeight];
// Initialize minutiae buffer
err = SGFPM_GetMaxTemplateSize(m_hFPM, &m_MaxTemplateSize);
if (err != SGFDX_ERROR_NONE)
{
this->statusBar()->showMessage( "GetMaxTemplateSize() failed. Error = "+QString::number( err));
}
if (m_FetBuf1)
delete [] m_FetBuf1;
m_FetBuf1 = new BYTE[m_MaxTemplateSize];
if (m_FetBuf2)
delete [] m_FetBuf2;
m_FetBuf2 = new BYTE[m_MaxTemplateSize];
if (m_FetBufM)
delete [] m_FetBufM;
m_FetBufM = new BYTE[m_MaxTemplateSize];
this->statusBar()->showMessage( "Initialization SuccessÄŸ");
ui->m_CapBtnV1->setEnabled(true);
ui->m_ConfigBtn->setEnabled(true);
ui->BtnCaptureR1->setEnabled(true);
ui->BtnCaptureR2->setEnabled(true);
ui->m_FormatBtn->setEnabled(true);
}
void MainWindow::on_BtnCaptureR1_clicked()
{
// Capture fingerprint
qDebug()<<"Capturing";
QImage cImage;
DWORD err = SGFPM_GetImageEx(m_hFPM, m_ImgBuf, 5000, NULL, REG_IMG_QUALITY);
if (err == SGFDX_ERROR_NONE)
{
cImage = QImage((const unsigned char*)(m_ImgBuf), m_ImageWidth, m_ImageHeight, QImage::Format_Indexed8);
QPixmap cPixmap;
cPixmap.convertFromImage(cImage);
ui->cR1lbl->setPixmap(cPixmap);
DWORD img_qlty;
err = SGFPM_GetImageQuality(m_hFPM, m_ImageWidth, m_ImageHeight, m_ImgBuf, &img_qlty);
// // Extract Fingerprint
err = SGFPM_CreateTemplate(m_hFPM, 0, m_ImgBuf, m_FetBuf1);
if (err == SGFDX_ERROR_NONE)
{
g_CapturedR1 = true;
this->statusBar()->showMessage("The first template is created. Image Quality= "+ img_qlty);
}
else{
this->statusBar()->showMessage(QString::fromUtf8(" CreateTemplate() failed. Error = ")+ QString::number(err));
}
}
else{
this->statusBar()->showMessage(QString("The captured image is not good. Try again...Err:")+QString::number(err));
}
if (g_CapturedR1 && g_CapturedR2)
{
ui->m_RegisterBtn->setDisabled(false);
}
// UpdateData(false);
}
void MainWindow::on_BtnCaptureR2_clicked()
{
// Capture fingerprint
DWORD img_qlty;
DWORD err = SGFPM_GetImageEx(m_hFPM, m_ImgBuf, 5000, NULL, REG_IMG_QUALITY);
if (err == SGFDX_ERROR_NONE)
{
QImage cImage;
cImage = QImage((const unsigned char*)(m_ImgBuf), m_ImageWidth, m_ImageHeight, QImage::Format_Indexed8);
QPixmap cPixmap;
cPixmap.convertFromImage(cImage);
ui->cR2lbl->setPixmap(cPixmap);
err = SGFPM_GetImageQuality(m_hFPM, m_ImageWidth, m_ImageHeight, m_ImgBuf, &img_qlty);
// Extract Fingerprint.
err = SGFPM_CreateTemplate(m_hFPM, 0, m_ImgBuf, m_FetBuf2);
if (err == SGFDX_ERROR_NONE)
{
this->statusBar()->showMessage("The second template is created. Image Quality= "+ img_qlty);
g_CapturedR2 = true;
}
else
{
this->statusBar()->showMessage("CreateTemplate() failed. Error = "+ QString::number(err));
}
}
else
{
this->statusBar()->showMessage("The captured image is not good. Try again...");
}
if (g_CapturedR1 && g_CapturedR2)
{
ui->m_RegisterBtn->setDisabled(false);
}
}
void MainWindow::on_m_CapBtnV1_clicked()
{
// Capture fingerprint
DWORD img_qlty;
DWORD err = SGFPM_GetImageEx(m_hFPM, m_ImgBuf, 5000, ui->cv1lbl->winId(), VRF_IMG_QUALITY);
if (err == SGFDX_ERROR_NONE)
{
err = SGFPM_GetImageQuality(m_hFPM,m_ImageWidth, m_ImageHeight, m_ImgBuf, &img_qlty);
// Extract Fingerprint.
err = SGFPM_CreateTemplate(m_hFPM, 0, m_ImgBuf, m_FetBufM);
if (err == SGFDX_ERROR_NONE)
{
g_CapturedV1 = true;
this->statusBar()->showMessage("The template for verification and identification. Image Quality="+QString::number( img_qlty));
}
else
{
this->statusBar()->showMessage("CreateTemplate() failed. Error = "+QString::number(err));
}
}
else
{
this->statusBar()->showMessage("The captured image is not good. Try again...");
}
if (g_CapturedR1 && g_CapturedR2 && g_CapturedV1)
{
ui->m_VerifyBtn->setDisabled(false);
ui->m_IdentifyBtn->setDisabled(false);
}
}
void MainWindow::on_m_FormatBtn_clicked()
{
WORD template_format;
if (ui->m_TemplateFormat->currentIndex() == 0)
template_format = TEMPLATE_FORMAT_SG400;
else
template_format = TEMPLATE_FORMAT_ANSI378;
DWORD err = SGFPM_SetTemplateFormat(m_hFPM, template_format);
if (err == SGFDX_ERROR_NONE){
//this->statusBar()->showMessage("SetTemplateFormat() Success");
}
else
{
//this->statusBar()->showMessage("SetTemplateFormat() failed. Error = "+ QString::number(err));
}
}
void MainWindow::on_m_RegisterBtn_clicked()
{
if ((m_FetBuf1 == NULL) || (m_FetBuf2 == NULL))
return;
BOOL matched;
DWORD err = SGFPM_MatchTemplate(m_hFPM, m_FetBuf1, m_FetBuf2, SecurityLevel[ui->m_SecureLevel->currentIndex()], &matched);
if ((err == SGFDX_ERROR_NONE) && matched)
{
QFile dFile(ui->uName->text()+".min");
if(dFile.open(QIODevice::ReadWrite))
{
dFile.write((const char *)m_FetBuf1,400);
dFile.write((const char *)m_FetBuf2,400);
dFile.close();
}
DWORD match_score;
err = SGFPM_GetMatchingScore(m_hFPM, m_FetBuf1, m_FetBuf2, &match_score);
this->statusBar()->showMessage("Registration Success : Matching Score ="+ match_score);
}
else{
this->statusBar()->showMessage("Registration Fail");
}
}
To copy to clipboard, switch view to plain text mode
Bookmarks