我正在使用Digital Persona 5300指纹读取器,并且我有一个SQL数据库,其中包含以varbinary格式捕获的指纹,我想知道是否有一种方法可以获取指纹并生成FMD来比较在其中捕获的指纹。具有数据库的读者可以知道它属于谁。 这是我尝试过的一部分代码,但无法正常工作
try{
Engine engine = UareUGlobal.GetEngine();
Fmd fmd = engine.CreateFmd(evt.capture_result.image,Fmd.Format.ANSI_378_2004);
m_fmds[0] = fmd; //Save the fingerprint capture
}
catch(UareUException e){ MessageBox.DpError("Engine.CreateFmd()",e); }
if(null != m_fmds[0] ){
//perform comparison
try{
Connection connection;
connection = con.conectar();
//Get all fingerprints
PreparedStatement identificarStmt = null;
try {
identificarStmt = connection.prepareStatement("SELECT no_empleado,id_relojChecador FROM relojChecador_empleado");
ResultSet rs = null;
rs = identificarStmt.executeQuery();
//Find the fingerprint
while(rs.next())
{
//Lee la plantilla de la base de datos
byte templateBuffer[] = rs.getBytes("id_relojChecador");
String nombre=rs.getString("no_empleado");
Fmd fmd = engine.CreateFmd(templateBuffer,templateBuffer.length,WIDTH,Fmd.Format.DP_REG_FEATURES);
int falsematch_rate = engine.Compare(m_fmds[0],m_fmds[1],0);
int target_falsematch_rate = Engine.PROBABILITY_ONE / 100000; //target rate is 0.00001
if(falsematch_rate < target_falsematch_rate){
m_text.append("Fingerprints matched.\n");
String str = String.format("dissimilarity score: 0x%x.\n",falsematch_rate);
m_text.append(str);
str = String.format("false match rate: %e.\n\n\n",(double)(falsematch_rate / Engine.PROBABILITY_ONE));
m_text.append(str);
}
else{
m_text.append("Fingerprints did not match.\n\n\n");
}
}
catch(UareUException e){ MessageBox.DpError("Engine.CreateFmd()",e); }
} } catch (SQLException ex) {
Logger.getLogger(Verification.class.getName()).log(Level.SEVERE,null,ex);
}
//discard FMDs
m_fmds[0] = null;
m_fmds[1] = null;
}