En función de esta frecuencia de parpadeo podremos obtener el nivel de sueño o cansancio de la persona lo que nos posibilita entre otras cosas, por ejemplo, saber cuando una persona está o no en condiciones para poder conducir.
El programa se dividirá en dos grandes bloques:
- Obtención de los cada uno de los frames del video centrándose en la parte de los ojos y analizando si están abiertos o cerrados.
- Obtención de la frecuencia de parpadeo analizando los frames en un conjunto de tiempo determinado y comprobando en cuales tenemos parpadeos
La primera parte sobre la obtención de los cada uno de los
frames del video centrándose en la parte de los ojos y analizando si están
abiertos o cerrados, la tengo más o menos representada en el siguiente código:
%después de varios días intentando crear una función para detectar la cara, he encontrado una que viene implementada en %matlab con la que detectar los ojos:
detector_cara = vision.CascadeObjectDetector('EyePairBig'); % Default: finds faces
Im_RGB = imread('lena.bmp');
bbox = step(detector_cara, Im_RGB); % Detect faces
% Draw bounding boxes
shapeInserter = vision.ShapeInserter('BorderColor','Custom','CustomBorderColor',[255 255 0]);
I_faces = step(shapeInserter, Im_RGB, int32(bbox));
figure, imshow(I_faces), title('Caras detectadas');
Im_RGB = imread('lena.bmp');
bbox = step(detector_cara, Im_RGB); % Detect faces
% Draw bounding boxes
shapeInserter = vision.ShapeInserter('BorderColor','Custom','CustomBorderColor',[255 255 0]);
I_faces = step(shapeInserter, Im_RGB, int32(bbox));
figure, imshow(I_faces), title('Caras detectadas');
A continuación se representa la imagen original junto con la
imagen que representa un rectángulo en la zona en la que se detectan los ojos,
que como se observa lo realiza de forma correcta.
No hay comentarios:
Publicar un comentario