Introducción


 

El rostro visual es una credencial que captura el rostro del usuario con una cámara visual. Es diferente de la información facial capturada con una cámara infrarroja y solo está disponible en dispositivos que admiten la visualización facial visual.

Actualmente, FaceStation F2, BioStation 3, BioEntry W3 admite la cara visual como credencial de usuario.


 

Hay 3 formas diferentes de agregar una credencial de rostro visual a un usuario.


 

1) Escanear la cara en un dispositivo.

2) Sube una imagen.

3) Regístrese por correo electrónico.


 

Este artículo lo guiará a través de la adición de una credencial facial visual escaneando su rostro en un dispositivo a través de la API de BioStar 2. 


 

En este artículo también se incluye un código de ejemplo de un programa de C# creado con las API mencionadas en este artículo. Puede consultarlo si está integrando esta funcionalidad a través de la API y necesita orientación.


 

Si desea obtener información sobre cómo agregar una cara visual mediante otros métodos a través de la API de BioStar 2, consulte los siguientes artículos.

Adición de una credencial de rostro visual mediante la carga de una imagen - [API de BioStar 2] Agregar credencial de rostro visual mediante la carga de una imagen 

Adición de la credencial de Visual Face mediante el registro por correo electrónico -  BioStar 2 Nueva API local - Registro de Visual Face(2) a través de send_email


 

 

Agregar una credencial facial visual escaneando su rostro en un dispositivo requiere 2 pasos.


 

1) Escanear la cara en un dispositivo.

2) Agregue la plantilla escaneada a un usuario.


 


 

Paso 1. Escanear cara en un dispositivo


 

Esta API se utiliza para inscribir credenciales faciales desde un dispositivo.


 

GET /api/devices/<device id>/credentials/face


Variable de ruta:

Introduzca el id del dispositivo que se utilizará para escanear la cara en <id de dispositivo>.


 

Parámetros de consulta:


Parámetros

Tipo

Obligatorio

Descripción

pose_sensitivity

Número

Y
 

Establezca la sensibilidad de la posición, el ángulo y la distancia de una cara al registrar la cara. Establezca la sensibilidad alta si desea obtener una plantilla de rostro detallada. 0 - 9


Ejemplo de solicitud de cartero:


Cuando ejecutes la API, el dispositivo te pedirá que escanees tu rostro. Una vez que escanee con éxito su rostro, la API devolverá con un código de estado 200 OK y un cuerpo de respuesta.

 

El cuerpo de la respuesta incluirá los valores "template_ex_normalized_image" y "templates".

Tenga en cuenta estos valores, ya que se utilizarán al agregar esta plantilla de cara escaneada a una credencial de usuario.


 

Ejemplo de respuesta del cartero:




Paso 2. Agregar la plantilla escaneada a un usuario


 

Esta API se utiliza para actualizar a un usuario. Hay muchos más parámetros de cuerpo que puede agregar según la información del usuario que desee editar. En este artículo, solo mostraré los parámetros relacionados con la credencial facial visual.


 

PUT /api/users/<id>


Variable de ruta:

Introduzca el id del usuario al que desea añadir la cara visual en <id>.


 

Parámetros del cuerpo:

Parámetro

Tipo

Obligatorio

Descripción

Rostros visuales

Arreglo

Y

Contenedor principal de la credencial de rostro visual

:template_ex_normalized_image

Base64

Y

Imagen recortada lista para la extracción visual del rostro

:Plantillas

Arreglo

Y

Contenedor de las plantillas

::credential_bin_type

Número

Y

DESCONOCIDO = -1FACE_TEMPLATE = 0FACE_TEMPLATE_IMAGE = 1FACE_RAW_IMAGE = 2FACE_TEMPLATE_EX_VER_2 = 5 (para FaceStation F2)FACE_TEMPLATE_EX_VER_3 = 9 (para BioStation 3 y W3)FACE_TEMPLATE_EX_NORMALIZED = 7FACE_TEMPLATE_EX_PICTURE = 8

::template_ex

Crudo

Y

Datos de la plantilla de cara visual
 

::plantillaEx

Crudo

Y
 

Datos de la plantilla de rostro visual eliminados en la versión 2.9.6 

::template_ex_ir

Crudo

Y

   Eliminado en v2.9.6
 

::templateExIr

Crudo

Y

   Eliminado en v2.9.6

::template_ex_picture

Base64

Y
 

Parámetro para cargar datos sin procesar de imágenes
 (SOLO es necesario si está cargando imágenes) 

:useProfile

Booleano

N

true para usar la imagen como perfil


 

Ejemplo de solicitud de cartero:


 

Copie y pegue los datos del cuerpo de la respuesta del paso 1.

Como puede ver a continuación, el contenido de "template_ex_normalized_image" y "plantillas" se ha copiado en el cuerpo de la solicitud aquí.


Si ha llamado correctamente a la API anterior y ha agregado una credencial de rostro visual a un usuario, recibirá un código 200 OK.

 

Ejemplo de respuesta del cartero:



También puede comprobar en la interfaz de usuario web de BioStar 2 que se ha agregado una nueva credencial de rostro visual al usuario.


 

Ejemplo de aplicación de consola de C#

 

* Nota: El siguiente código es aplicable a la versión 2.9.0 y versiones anteriores. Si desea implementarlo para otras versiones, cambie la información de los parámetros según sea necesario. *


 

Este es un código de ejemplo de un programa de C# que usa las API para registrar la cara visual de un usuario mediante el escaneo de la cara en un dispositivo.


 

static asincrónico void ScanAndRegisterVisualFace()

{

Console.WriteLine("*****Tarea ScanAndRegisterVisualFace iniciada******");

if (sessionID == null)

{

Console.WriteLine("¡Debes iniciar sesión primero!");

devolución;

}

 

CookieContainer cookieContainer = nuevo CookieContainer();

 

HttpClientHandler handler = new HttpClientHandler();

Controlador. CookieContainer = cookieContainer;

 

Cliente HttpClient = nuevo HttpClient(manejador);

 

cliente. DefaultRequestHeaders.Add("bs-session-id", sessionID);

 cookieContainer.Add(new Uri("https://127.0.0.1"), new Cookie("bs-session-id", sessionID));

ListaUsuarios();

Console.WriteLine("Seleccionar ID de usuario para el registro visual de rostros...");

string userID = Console.ReadLine();

 //HttpResponseMessage httpResponse = cliente en espera. GetAsync("https://127.0.0.1/api/users");

 HttpResponseMessage httpResponse = cliente. GetAsync("https://127.0.0.1/api/users"). Resultado;

 

 

if (httpResponse.IsSuccessStatusCode == true)

{

string httpResponseBody = await httpResponse.Content.ReadAsStringAsync();

Console.WriteLine(httpResponseBody);

Console.WriteLine("Registro de VISUAL FACE en el USER(" + userID + ")");

ScanVisualFace(ID de usuario);

 

}

más

{

Console.WriteLine("Error al recuperar la lista de usuarios");

Console.WriteLine(httpResponse.ToString());

}

}

 

[ScanVisualFace]

  • Este paso escanea la cara visual a través del dispositivo seleccionado.

static async void ScanVisualFace(string UserID)

{

Console.WriteLine("*****Tarea ScanVisualFace iniciada*****");

CookieContainer cookieContainer = nuevo CookieContainer();

 

HttpClientHandler handler = new HttpClientHandler();

Controlador. CookieContainer = cookieContainer;

 

HttpClient httpClient = nuevo HttpClient(manejador);

 

Cliente HttpClient = nuevo HttpClient(manejador);

httpClient.DefaultRequestHeaders.Add("bs-session-id", sessionID);

 cookieContainer.Add(new Uri("https://127.0.0.1"), new Cookie("bs-session-id", sessionID));

ListDevices();

Console.WriteLine("Seleccione el ID de dispositivo para el escaneo visual de rostros... (SELECCIONE FaceStation F2 o BioStation 3...");

string deviceID = Console.ReadLine();

 string resourceAddress = "https://127.0.0.1/api/devices/" + deviceID + "/credentials/face?pose_sensitivity=0&nonBlock=true";

 

JavaScriptSerializer serializer = nuevo JavaScriptSerializer();

 

carga útil de cadena = "";

Console.WriteLine(resourceAddress);

StringContent sc = new StringContent(payload, Encoding.UTF8, "application/json");

HttpResponseMessage httpResponse = await httpClient.PutAsync(resourceAddress, sc);

HttpResponseMessage, httpResponse = httpClient.GetAsync(resourceAddress). Resultado;

 

 

Console.WriteLine("ESCANEA TU CARA VISUAL con el DEVICE(ID: " + deviceID + ")");

 

if (httpResponse.IsSuccessStatusCode == true)

{

Console.WriteLine("Escaneo de VISUAL FACE exitoso.");

string httpResponseBody = await httpResponse.Content.ReadAsStringAsync();

Console.WriteLine(httpResponseBody);

dynamic obj = JsonConvert.DeserializeObject(httpResponseBody);

cadena template_ex_normalized_image = obj.credentials.faces[0].template_ex_normalized_image;

cadena template_ex = obj.credentials.faces[0].templates[0].template_ex;

cadena template_ex_ir = obj.credentials.faces[0].templates[1].template_ex_ir;

RegisterVisualFaceToUser(ID de usuario, template_ex_normalized_image, template_ex, template_ex_ir);

}

más

{

Console.WriteLine("Error en el análisis de VISUAL FACE.");

Console.WriteLine(httpResponse.ToString());

}

}

 

[RegisterVisualFaceToUser]

  • Este método recibe los valores de plantilla del método 'ScanVisualFace' y los coloca en los valores 'template_ex_normalized_image', 'template_ex', 'template_ex_ir' y 'flag'.

static async void RegisterVisualFaceToUser(string UserID, string template_ex_normalized_image, 

cadena template_ex, cadena template_ex_ir)

{

Console.WriteLine("*****Tarea RegisterVisualFaceToUser iniciada******");

if (sessionID == null)

{

Console.WriteLine("¡Debes iniciar sesión primero!");

devolución;

}

CookieContainer cookieContainer = nuevo CookieContainer();

 

HttpClientHandler handler = new HttpClientHandler();

Controlador. CookieContainer = cookieContainer;

 

HttpClient httpClient = nuevo HttpClient(manejador);

 

Cliente HttpClient = nuevo HttpClient(manejador);

httpClient.DefaultRequestHeaders.Add("bs-session-id", sessionID);

 cookieContainer.Add(new Uri("https://127.0.0.1"), new Cookie("bs-session-id", sessionID));

Console.WriteLine("Registro de VISUAL FACE a USER(" + UserID + ") ...");

 

 string resourceAddress = "https://127.0.0.1/api/users/" + UserID + "";

string payload = "{\"Usuario\": {\"credenciales\": {\"visualFaces\": [{\"template_ex_normalized_image\": \"" + template_ex_normalized_image + "\",\"templates\": [{\"template_ex\": \"" + template_ex + "\",\"credential_bin_type\": \"5\"},{\"template_ex_ir\": \"" + template_ex_ir + "\",\"credential_bin_type\": \"6\"}]}]}}}";

StringContent sc = new StringContent(payload, Encoding.UTF8, "application/json");

HttpResponseMessage httpResponse = await httpClient.PutAsync(resourceAddress, sc);

HttpResponseMessage httpResponse = httpClient.PutAsync(resourceAddress, sc). Resultado;

 

 

if (httpResponse.IsSuccessStatusCode == true)

{

Console.WriteLine(httpResponse.ToString());

string httpResponseBody = await httpResponse.Content.ReadAsStringAsync();

Console.WriteLine("***** VISUAL FACE ahora está registrado como " + " Usuario " + ID de usuario + " *****");

}

más

{

Console.WriteLine("Error al registrar VISUAL FACE en el usuario(" + UserID + ")");

Console.WriteLine(httpResponse.ToString());

}

 

}


[Seleccione usuario y dispositivo]

[Escanea tu rostro visual]

[Registro procesado con éxito]