Ejemplo en Python que detecta las caras en una imagen y las marca con un recuadro verde. Muestra el número de caras detectado. Para ello utilizaremos la librería Open CV. Mostramos un ejemplo de detección de caras en una imagen ejecutando el programa Python.
- Descargar e instalar librería CV2 en Python.
- Código fuente para detectar y marcar las caras en una imagen con Python.
- Ejemplo de uso del programa Python para detectar caras.
Descargar e instalar librería CV2 en Python
Para poder usar el ejemplo Python que detecta las caras de una imagen necesitaremos tener instalada la libería CV2 en Python. Para instalarla podemos ejecutar, desde la línea de comandos:
pip install opencv-python
Para que el comando anterior funcione deberemos tener instalado Python en el equipo donde vayamos a realizar y ejecutar el programa, con indicamos en el siguiente tutorial:
Código fuente para detectar y marcar las caras en una imagen con Python
A continuación mostramos el código fuente en Python para detectar y marcar las caras en una imagen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
import cv2 #Cargamos los clasificadores requeridos face_cascade = cv2.CascadeClassifier('C:\Program Files\Lib\site-packages\cv2\data\haarcascade_frontalface_alt.xml') #Utilizamos un fichero de imagen del disco duro img = cv2.imread('d:\cara.jpg') while(True): #Convertimos la imagen a blanco y negro gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #Buscamos las coordenadas de los rostros caras = face_cascade.detectMultiScale(gray, 1.3, 5) #Dibujamos un rectángulo en las coordenadas de cada rostro numCaras = 0 for (x,y,w,h) in caras: cv2.rectangle(img,(x,y),(x+w,y+h),(125,255,0),2) numCaras = numCaras + 1 #Mostramos la imagen cv2.imshow('img',img) #Pulsando la tecla "q" salimos del programa if cv2.waitKey(1) & 0xFF == ord('q'): break print ("Número de caras detectadas: {}".format(numCaras)) |
Para que el código fuente Python anterior funcione deberemos tener los clasificadores, que son plantillas XML con las opciones de detección de caras. Cuanto mejor sea la plantilla más eficiente será la detección. La librería CV2 ya incluye unas plantillas por defecto, que son las que usamos en el código anterior:
C:\Program Files\Lib\site-packages\cv2\data\haarcascade_frontalface_alt.xml
Guardaremos el código anterior en un fichero, por ejemplo: decteccion_caras_imagen.py.
Ejemplo de uso del programa Python para detectar caras
En el programa anterior indicamos la imagen a escanear mediante código. Como es lógico, lo ideal es pedir la ruta y nombre de la imagen a escanear por consola. En este caso escaneará la imagen ubicada en la unidad D, con el nombre «cara.jpg», dicho fichero debe existir. Si ejecutamos el programa con el siguiente comando:
«C:/Program Files/python.exe» d:/ProyectoA_Python/Imagen/Caras/decteccion_caras_imagen.py
Suponemos que python.exe se encuentra en la carpeta C:/Program Files/ y el fichero Python con el código fuente en d:/ProyectoA_Python/Imagen/Caras/decteccion_caras_imagen.py. Suponemos también que existe el fichero D:\cara.jpg, que será la imagen que contenga las caras a detectar. Si todo es correcto mostrará una ventana con la imagen y las caras remarcadas en un recuadro verde:
Al pulsar la tecla «q» saldremos del programa y nos mostrará el número de caras detectadas en la imagen: