Detección de Rostros con reTerminal y cámara Pi usando OpenCV

Introducción
La detección de rostros mediante el método Haar Cascade es una técnica fundamental en visión por computadora, que utiliza un modelo de aprendizaje automático para reconocer rasgos faciales. Este método se basa en una cascada de clasificadores entrenados en características de tipo Haar, lo que permite identificar rostros de manera rápida y precisa en imágenes y secuencias de video. Su amplia aplicación abarca diversos campos, incluyendo tecnología de reconocimiento facial para seguridad y autenticación, sistemas de videovigilancia e incluso en software de fotografía para etiquetado y organización automática basados en rostros detectados. El método Haar Cascade destaca especialmente por su eficiencia computacional, lo que lo hace ideal para la detección de rostros en tiempo real en diversos contextos, contribuyendo significativamente al avance de tecnologías de análisis e identificación facial.
Comenzando
Antes de iniciar este proyecto, es posible que necesites preparar tu hardware y software como se describe a continuación.
Preparación de Hardware
reTerminal | PiCam |
---|---|
![]() | ![]() |
Preparación de Software
Recomendamos instalar la versión Bullesye o Bullseye del sistema operativo Raspberry Pi de 64 bits desde su sitio web oficial. Si prefieres instalar un nuevo sistema operativo Raspbian, sigue los pasos descritos en esta guía.
Recomendamos encarecidamente revisar nuestro tutorial anterior sobre Introducción a OpenCV, ya que este tutorial forma parte de nuestra serie.
¿Qué es el método Haar Cascade?
En OpenCV, el método Haar Cascade es un algoritmo de detección de rostros basado en aprendizaje automático. Funciona entrenando un clasificador en cascada con imágenes positivas y negativas, lo que le permite reconocer patrones y características indicativas de rostros. La cascada consta de múltiples etapas, cada una con un conjunto de clasificadores débiles que van descartando progresivamente regiones que no contienen rostros, haciéndolo muy eficiente. Las características de tipo Haar, que se asemejan a patrones rectangulares de áreas oscuras y claras, forman la base para reconocer objetos como rostros. Una vez entrenada, la cascada puede aplicarse a imágenes o a frames de video para detectar rostros con rapidez. Este método se usa ampliamente por su precisión y velocidad, siendo una opción popular en diversas aplicaciones, incluyendo la detección y reconocimiento de rostros en tiempo real.
Si quieres aprender más, consulta esta documentación.
Ejecutemos el código.
Asegúrate de estar en la carpeta correcta. Si no:
cd Seeed_Python_ReTerminal/samples/Opencv_and_piCam
Luego, o incluso puedes utilizar Thonny IDE para ejecutar el script de Python:
python facedetection_pi.py
A continuación te presentamos el fragmento completo de código para tu referencia:
import cv2
from picamera2 import Picamera2
# Cargar el clasificador pre-entrenado Haar Cascade para detección de rostros
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
picam2 = Picamera2()
picam2.preview_configuration.main.size = (1280, 720)
picam2.preview_configuration.main.format = "RGB888"
picam2.preview_configuration.align()
picam2.configure("preview")
picam2.start()
try:
while True:
im = picam2.capture_array()
cv2.imshow("Camera", im)
# Convertir la imagen a escala de grises para la detección de rostros
gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
# Realizar la detección de rostros
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=5, minSize=(30, 30))
# Dibujar rectángulos alrededor de los rostros detectados
for (x, y, w, h) in faces:
cv2.rectangle(im, (x, y), (x+w, y+h), (255, 0, 0), 2)
# Mostrar la imagen con la detección de rostros
cv2.imshow("Face Detection", im)
# Salir del bucle cuando se presione 'q'
if cv2.waitKey(1) == ord('q'):
break
finally:
# Liberar recursos
cv2.destroyAllWindows()
picam2.stop()
picam2.close()
Si deseas encontrar más archivos xml de cascadas Haar para explorar, visita este enlace.
Aplicaciones
Originalmente diseñada para la detección de rostros en tiempo real, la tecnología Haarcascade ha evolucionado para enfrentar desafíos contemporáneos. Innovadores han extendido sus capacidades para incluir la detección de mascarillas faciales, vital en medidas de salud pública. Además, la tecnología se ha optimizado para la detección de placas de matrícula, especialmente útil en entornos con recursos limitados donde el hardware avanzado es escaso. Estas adaptaciones demuestran la versatilidad y eficiencia de Haarcascade para abordar necesidades diversas en aplicaciones de visión por computadora.

Soporte técnico
¡Gracias por elegir nuestros productos! Estamos aquí para brindarte diferentes tipos de soporte y asegurarnos de que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para adaptarnos a diferentes preferencias y necesidades.