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 |
: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]