Professional Documents
Culture Documents
El ejemplo esta hecho en C# con VS 2010, MySQL y la librera de Griaulle (fingerpint SDK 2009); si
no recuerdan de donde obtener la librera, pueden consultarlo aqu. Se utiliz, tambin, el
connector/net para enlazar a MySQL con C#.
Lo primero que debemos hacer es instalar el Griaulle Fingerprint SDK 2009, este ejemplo est
hecho con la versin 2009 del SDK. Es importante recordar la ruta de la instalacin.
Como segundo paso debemos configurar nuestra base de datos, ya que la informacin se
almacenar en dicha base de datos, en el ejemplo realizado tenemos una base de datos llamada
finger y una tabla llamada data, la tabla tiene 5 campos:
Id (int)
texto_asociado (text): en este campo almacenaremos un texto de referencia para identificar el
registro
template (mediumblob): aqu almacenaremos el template extrado de la huella.
Imagen (mediumblob): este campo no se utiliza en este ejemplo
Calidad_template (int): sirve para almacenar la calidad del template extraido y almacenado en el
campo template.
Identificar: Identifica la huella, comparando la huella recin extraida contra cada una de las huellas
almacenadas en la base de datos.
Hace falta una opcin importante: Verificar, pero es muy fcil de implementar.
Si no recuerdan lo que significa Identificar, Verificar o algn otro concepto, este es el momento
perfecto para consultarlo en este articulo.
Al momento de utilizar el fingerprint SDK, lo que debemos hacer es declarar e inicializar un objeto
del tipo FingerprintCore:
GriauleFingerprintLibrary.FingerprintCore core = New
GriauleFingerprintLibrary.FingerprintCore();
Despus, declaramos los manejadores de los eventos onStatus (se dispara cada vez que un lector
de huellas es conectado o desconectado) y onImage (se dispara cada vez que una imagen es
adquirida por algn lector):
core.onStatus += new
GriauleFingerprintLibrary.StatusEventHandler(core_onStatus);
core.onImage += new
GriauleFingerprintLibrary.ImageEventHandler(core_onImage);
Uno de los requisitos para poder utilizar la libreria es inicializarla, es decir, indicar que vamos a
iniciar el uso de la librera:
core.Initialize();
Hecho esto, podemos indicar al lector que vamos a hacer uso de la captura de huellas:
core.CaptureInitialize();
--------------------------------
Texto agregado el 18/12/2009: Personalmente he optado por declarar los eventos y realizar las
inicializaciones correspondientes en el evento load del formulario.
--------------------------------
Hasta este punto hemos iniciado la captura de huellas con nuestro lector y hemos definido la
funcin que se ejecutar cada vez que una huella se adquiere del lector (con el evento onImage) y
la funcin que se ejecuta cuando un lector es conectado o desconectado en nuestro equipo (con el
evento onStatus).
En la funcin que se ejecuta cuando el lector es conectado al equipo, debemos indicarle a la librera
que debe iniciar la captura de huellas con ese lector, esto lo hacemos de la siguiente manera:
La funcin onImage que utilizamos en el ejemplo hace una comprobacin de la calidad de la imagen
obtenida del lector, si es de mala calidad se debe volver a capturar una huella, si es de calidad
media se pregunta al usuario si desea continuar y si es de buena calidad se contina sin ningn
problem:
switch(templateHuella.Quality)
{
case 0: // en caso de que la huella sea de mala
calidad, se tiene que volver a extraer la huella
labelCalidad.Text = "La huella es de mala calidad,
vuelva a intentar";
return;
}
catch (System.Exception exc)
{
MessageBox.Show(exc.Message);
}
}
La condicin if() es para verificar que se ha conectado un lector (recuerden que tambin se ejecuta
el evento onStatus cuando se desconecta un lector)
En este momento, si colocamos una huella en el lector, se disparar tambin el evento onImage,
para poder manejar la huella, debemos extraer el template y almacenarlo en memoria para poder
insertarlo en la base de datos, eso lo hacemos con la funcin Extract()
GriauleFingerprintLibrary.DataTypes.FingerprintRawImage imagenHuella;
imagenHuella = ie.RawImage;
core.Extract(imagenHuella, ref templateHuella);
Ya que tenemos el template, estamos listos para insertar el registro en la base de datos, es
importante que sea mediante parmetros, en el ejemplo hemos usado nuestra propia librera, por lo
que la instruccin que usamos es la siguiente:
Como requirimiento minimo se debe insertar el template de la huella y la calidad que tiene dicho
template (se obtiene con la propiedad templateHuella.Quality
Para llevar a cabo el proceso de identificacin es necesario recuperar cada uno de los registros
existentes en nuestra base de datos para poder compararlos uno por uno. Para poder ir
almacenando temporalmente los registros de la base de datos, debemos crear un objeto donde
almacenemos el template
string consulta;
byte[] dataTemp; //nos permitir almacenar temporalmente el template de la B.D.
GriauleFingerprintLibrary.DataTypes.FingerprintTemplate templateTemp;
int precision,calidad;
while (rdr.Read())
{
dataTemp = (byte[])rdr["template"]; //extraemos el template desde la B.D.
calidad = (int)rdr["calidad_template"]; //extraemos la calidad de ese template
/* Creamos un nuevo objeto del tipo temporal "FingerprintTemplate" y asignamos las propiedades
del template que acabamos de extraer de la B.D.*/
templateTemp = new
GriauleFingerprintLibrary.DataTypes.FingerprintTemplate();
templateTemp.Buffer = dataTemp;
templateTemp.Size = dataTemp.Length;
templateTemp.Quality = calidad;
if ((core.Identify(templateTemp, out precision))==1) //si el template cumple con
los requisitos de presicin
{
MessageBox.Show(rdr["texto_asociado"].ToString());
break;
}
}