Detectar rostros y ojos con OpenCV y Haar Cascades desde cero

Detección de rostro y ojos en usando la webcam del PC con OpenCV y Haar Cascades

La detección de rostros mediante el uso de una computadora es una de las aplicaciones de Visión artificial (Computer Vision).

Consiste en la localización de rostros en imágenes o videos, captados por una cámara o guardados en el disco duro, mediante el uso de algoritmos de machine learning.

La detección de rostros con Python, OpenCV y Haar Cascades

OpenCV es una librería opensource de visión por computadora y machine learning con soporte para Python, C++ y Java.

Ofrece más de dos mil algoritmos diseñados para realizar diversas tareas, entre las que se incluyen la detección y el reconocimiento de rostros.  

Sus modelos preentrenados, basados en la tecnica Haar Cascades, permiten con aceptable rapidez la detección de rostros y ojos.

A continuación, te mostramos la instalación del software y librerías necesarias para la implementación de un sistema de detección de rostros usando la webcam del PC con OpenCV y Haar Cascades.

Luego, te ofreceremos el código así como una breve explicación de los comandos utilizados.

Instalar Python, NumPy y OpenCV

Instalación de Python

Lo primero que tienes que hacer es instalar Python. Para ello, puedes descargar su archivo de instalación desde el siguiente enlace:

Una vez terminada la instalación, abre el Símbolo del sistema. Para ello, presiona las teclas Windows + R y haz clic en Aceptar. 

Escribe el siguiente comando y presiona Enter:

python --version

Si te aparece la versión de Python, significa que la instalación ha sido exitosa.

También, asegúrate de que el gestor de paquetes pip se ha instalado correctament. Para ello, ejecuta el comando:

pip -v

Instalación de Numpy

Una vez instalado Python, habrá que instalar la librería NumPy, puesto que OpenCV utiliza su estructura de datos de tipo array.

Para la instalación de NumPy, puedes utilizar el gestor de paquetes pip. Para ello, abre el Símbolo del sistema y ejecuta el siguiente comando:

pip install numpy

Instalación de OpenCV

Para instalar OpenCV, abre el Símbolo del sistema de Windows y ejecuta el siguiente comando:

pip install opencv-contrib-python

Descarga de modelos preentrenados en detección de rostros

Lo último que queda por hacer es descargar desde GitHub los modelos preentrenados que utilizará OpenCV para la detección de rostros y ojos.

Haz clic en el siguiente enlace: https://github.com/opencv/opencv/tree/master/data/haarcascades

Ubica y haz clic en el archivo haarcascade_frontalface_default.xml. Luego, haz clic derecho en el botón Raw y selecciona la opción Guardar enlace como. El archivo se descargará en tu disco duro.

Descarga del mismo modo, el archivo haarcascade_eye.xml.

Para terminar copia ambos archivos con extensión XML dentro de la carpeta de instalación de Python. Si no sabes dónde se encuentra, abre el Símbolo del sistema y ejecuta el comando where Python.

Código para detectar rostros y ojos usando la webcam del PC

import numpy as np
import cv2

face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')

webcam = cv2.VideoCapture(0)

while True:
    ret, frame = webcam.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    faces = face_cascade.detectMultiScale(gray, 1.3, 5)

    for (x,y,w,h) in faces:
        cv2.rectangle(frame,(x,y),(x+w,y+h),(255,0,0),2)
        roi_gray = gray[y:y+h, x:x+w]
        roi_color = frame[y:y+h, x:x+w]

        eyes = eye_cascade.detectMultiScale(roi_gray)
        for (ex,ey,ew,eh) in eyes:
            cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)

    cv2.imshow('Face Detection',frame)
    p = cv2.waitKey(28)
    if p == 27:
        break

webcam.release()
cv2.destroyAllWindows()

Para ejecutar el programa:

Escribe Python en la barra de búsqueda de Windows y haz clic en IDLE (Python xxx) en la lista de coincidencias.

En la IDLE de Python, haz clic en File > New File. En la ventana que se abre, haz clic en File > Save As. Escribe un nombre y guarda el archivo con extensión .py en tu disco duro.

Copia y pega el código, haz clic en File > Save. Luego haz clic en Run > Run Module. La cámara de tu computadora se activará y aparecerá un recuadro alrededor de tu rostro y ojos.

1 comentario en “Detectar rostros y ojos con OpenCV y Haar Cascades desde cero”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio