Tabla de contenido:
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-13 06:57
El objetivo principal de estos instructables es mostrar lo fácil que será el procesamiento de imágenes. Con la ayuda de MATLAB
La detección y el seguimiento de rostros ha sido un campo de investigación importante y activo, por eso voy a explicar cómo se puede hacer con Matlab.
En el siguiente tutorial voy a hacer lo siguiente:
1.detectar caras en una imagen y contar.
2.detectar ojos humanos en una imagen y contar.
3.detectar la boca humana en una imagen y contar.
4.detectar rostros en un video y contar.
5.detectar ojos humanos en un video y contar.
6.detectar la boca humana en un video y contar.
Paso 1: Detectar caras en una imagen y contar
GUIÓN DE MATLAB:
borrar todo% borrar todos los objetos clc% borrar pantalla
FDetect = vision. CascadeObjectDetector; % Detectar objetos usando el algoritmo Viola-Jones
% Leer la imagen de entrada
imagen = imread ('c: / Deskotp / HarryPotter.jpg'); % cargue la imagen usando imread ('ubicación del archivo / nombre.jpg')
BB = paso (FDetect, imagen); % Devuelve los valores del cuadro delimitador en función del número de objetos
figura, imshow (I);
esperar
para i = 1: tamaño (BB, 1)
rectángulo ('Posición', BB (i,:), 'Ancho de línea', 5, 'Estilo de línea', '-', 'Color de borde', 'r'); % r -rojo, g-verde, b-azul
fin
título ('Detección de rostro'); % de título de la cifra retenida;
El resultado será como la imagen que se adjuntó en este paso.
Para contar el número de rostros detectados:
borrar todo% borrar todos los objetos clc% borrar pantalla
FDetect = vision. CascadeObjectDetector; % Detectar objetos usando el algoritmo Viola-Jones% Leer la imagen de entrada
imagen = imread ('c: / Deskotp / HarryPotter.jpg'); % cargue la imagen usando imread ('ubicación del archivo / nombre.jpg')
BB = paso (FDetect, imagen); % Devuelve los valores del cuadro delimitador en función del número de objetos
figura,
imshow (yo);
esperar
para i = 1: tamaño (BB, 1)
rectángulo ('Posición', BB (i,:), 'Ancho de línea', 5, 'Estilo de línea', '-', 'Color de borde', 'r'); % r -rojo, g-verde, b-azul
fin
text (10, 10, strcat ('\ color {red} No de caras =', num2str (longitud (BB)))); Esta línea te da la cuenta
título ('Detección de rostro'); % título de la figura
esperar;
Paso 2: Detectar ojos humanos en una imagen y contar
GUIÓN DE MATLAB:
limpiar todo;
clc;
% Para detectar EyesEyeDetect = vision. CascadeObjectDetector ('EyePairBig');
% Leer la entrada
imagen = imread ('c: / Deskotp / HarryPotter.jpg'); % cargue la imagen usando imread ('ubicación del archivo / nombre.jpg')
BB = paso (EyeDetect, imagen);
figura,
imshow (imagen);
rectángulo ('Posición', BB, 'Ancho de línea', 4, 'Estilo de línea', '-', 'Color de borde', 'b');
título ('Detección de ojos');
El resultado será como la imagen que se adjuntó en este paso.
Para contar el número de ojos detectados:
borrar todo; clc; % Para detectar ojos
EyeDetect = vision. CascadeObjectDetector ('EyePairBig');
imagen = imread ('c: / Deskotp / HarryPotter.jpg'); % cargue la imagen usando imread ('ubicación del archivo / nombre.jpg')
BB = paso (EyeDetect, imagen); figura, imshow (imagen); rectángulo ('Posición', BB, 'Ancho de línea', 4, 'Estilo de línea', '-', 'Color de borde', 'b');
text (10, 10, strcat ('\ color {red} No de ojos =', num2str (longitud (BB))));
título ('Detección de ojos');
Paso 3: Detectar la boca humana en una imagen y contar
GUIÓN DE MATLAB:
limpiar todo;
clc;
% Para detectar la boca
MouthDetect = vision. CascadeObjectDetector ('Boca', 'MergeThreshold', 16);
% Leer la imagen de entrada = imread ('c: / Deskotp / HarryPotter.jpg'); % cargue la imagen usando imread ('ubicación del archivo / nombre.jpg')
BB = paso (MouthDetect, imagen);
figura, imshow (imagen);
esperar
para i = 1: tamaño (BB, 1)
rectángulo ('Posición', BB (i,:), 'Ancho de línea', 4, 'Estilo de línea', '-', 'Color de borde', 'r');
fin
título ('Detección bucal');
esperar;
El resultado será como la imagen que se adjuntó en este paso.
Para contar el número de bocas detectadas:
limpiar todo; clc; % Para detectar la boca
MouthDetect = vision. CascadeObjectDetector ('Boca', 'MergeThreshold', 16); % Leer la entrada
imagen = imread ('c: / Deskotp / HarryPotter.jpg'); % cargue la imagen usando imread ('ubicación del archivo / nombre.jpg') BB = paso (MouthDetect, imagen);
figura, imshow (imagen);
esperar
para i = 1: tamaño (BB, 1)
rectángulo ('Posición', BB (i,:), 'Ancho de línea', 4, 'Estilo de línea', '-', 'Color de borde', 'r');
fin
text (10, 10, strcat ('\ color {red} No de bocas =', num2str (longitud (BB))));
título ('Detección bucal');
esperar;
Paso 4: Detectar caras, ojos, boca en un video y contar
limpiar todo;
cierra todo;
clc;
% Capture los fotogramas de video usando la función de entrada de video% Debe reemplazar la resolución y el nombre de su adaptador instalado.
a = vision. CascadeObjectDetector; % para detectar rostro
% a = vision. CascadeObjectDetector ('Boca', 'MergeThreshold', 16); % para detectar boca
% a = vision. CascadeObjectDetector ('EyePairBig'); % para detectar ojos
% solo usa uno (cara / ojos / boca)
vid = videoinput ('winvideo', 1, 'yuy2_320x240'); % Establecer las propiedades del objeto de video
set (vid, 'FramesPerTrigger', Inf);
set (vid, 'Espacio de color devuelto', 'rgb');
vid. FrameGrabInterval = 5; % inicie la adquisición de video aquí
start (vid)% Establece un bucle que se detiene después de 100 fotogramas de adquisición
while (vid. FramesAcquired <= 200)% Obtiene la instantánea del fotograma actual
datos = obtiene instantánea (vid);
imshow (datos);
b = paso (a, datos);
esperar
para i = 1: tamaño (b, 1)
rectángulo ('posición', b (i,:), 'ancho de línea', 2, 'estilo de línea', '-', 'Color de borde', 'r');
fin
esperar
text (10, 10, strcat ('\ color {green} No de caras =', num2str (longitud (b))));
fin
detener (vid); % Detener la adquisición de video