ELO 329 Programación Orientada a Objetos
"Reconocimineto de Rostros"
Luis Leiva
Felipe Muñoz
Sebastián Ubiergo
El proyecto consiste en una captura y reconocimiento de rostros en tiempo real. Para ello, el programa debe poseer una base de datos en la cual deben estar registrados todas las personas de interés. El sistema es capaz de decir cuando la persona no está registrada en la base de datos, y debe ser capaz de registrar nuevos usuarios en cualquier momento.
Las aplicaciones de este proyecto son múltiples. En particular, fue pensado para implementarlo en el ambiente de porteria de la Universidad Técnica Federico Santa María.En este caso, se tienen 2 personas identificadas como la persona a reconocer o entrenar en la base de datos y la persona a cargo de observar y/o guardar en base de datos el rostro.
De esta manera, la interacción de las 2 personas se desarrolla en base al ingreso al recinto específico. Por lo cual mediante el sistema implementado, se hace este escenario de forma rápida y eficiente.Casos de uso
Actor 1 (Sansano) | Actor 2 (Guardia) | Sistema (Software) |
---|---|---|
1. El guardia solicita reconocer al sansano | 2. El sistema responde con la cámara en tiempo real para reconocer al usuario. | |
3. El sansano se coloca en posición para que se le reconozca | 4. El sistema muestra en pantalla si el usuario esta en base de datos colocando su rol | |
5. El guardia observa si su rol sale en pantalla y deja entrar al recinto si es el caso | ||
6. El sansano entra a la Universidad |
Actor 1 (Sansano) | Actor 2 (Funcionario) | Sistema (Software) |
---|---|---|
1. Funcionario USM solicita guardar rostros en la base de datos | 2. El sistema muestra por pantalla rol de la persona que se quiere guardar | |
3. El sansano de da los datos requeridos al funcionario | 4. El usuario escribe los datos requeridos por el Actor 1 | 5. El sistema muestra en pantalla los botones de menpu principal, recopilar datos, volver a datos para otra persona y la cámara lista para recopilar datos |
6. El usuario pide al sansano colocarse en posición y efectuar serie de tomas de fotos | ||
7. El sansano se coloca en posición y efectpua serie de movimientos faciales frontales | 8. El usuario presiona la toma de fotos respectiva | 9. El sistema guarda esas fotos en la base de datos asignada al nombre y rol correspondiente |
Actor 1 (Sansano) | Actor 2 (Guardia) | Sistema (Software) |
---|---|---|
1. El funcionario inicia el sistema al entrar a la sala de clases | 2. El sistema responde con la cámara en tiempo real para reconocer a los asistentes. La cámara debe tener una visión de todas las sillas de la sala | |
3. Los asistentes a la clase se sientan de forma orientada para que la cámara pueda verlos a todos. | 4. El sistema deja una registro de todas las personas que hay en la sala | |
5. El funcionario debe guardar la información registrada por el sistema |
A continuación se presenta el diagrama de clase:
A continuación se presenta el diagrama de secuencia para el caso de uso de roconomiento:
Al ejecutar el programa se abre la siguiente ventana:
Una vez aqui se puede proceder a realizar el entrenamiento apretando el boton "Trainer" y se despliega la siguiente ventana:
Una vez aquí se ingresa el rol de la persona y se aprieta el boton "Aceptar" para que se despliegue la ventana donde se realizará la toma de datos:
El botón de "Capturar imagen" se debe tornar verde cuando el sistema reconoce que existe un rostro y lo puede utilizar para el modelo, en caso contrario es rojo. Si se pulsa el botón "Menú Principal" se regresa a la ventana mostrada en la primera imagen de está sección y si se pulsa "Otra Persona" se vuelve la ventana de registro.
Si por alguna razón cuando se está en la ventana del registro no se ingresa nada en el campo "Rol", el sistema muestra lo siguiente:
Si en la ventana principal (La primera imagen de la sección) se aprieta el botón "Recognition" muestra la siguiente pantalla:
La imagen que se muestra a la izquierda es lo que ve la cámara a tiempo real y la de la derecha es la última en la que se pudo reconocer a una persona.
En este caso se usó C++ para el desarrollo del problema. En el caso del codigo visual se utilizó la version "Open Source" de QT versión 5.5.1 y Qmake versión 3.0. Además para la utilización en tiempo real de la cámara y posteriormente el reconocedor de caras, se utilizó la librería abierta OpenCV versión 3.4.1.
Cabe destacar que en versiones distintas a las indicadas es probable que el programa no funcione y se tenga que modificar código que no necesariamente abarque este curso. El proyecto puede ser descargado desde aquí