Detección de caras y emociones en imágenes utilizando Python y la librería OpenCV

Hoy te traigo un tutorial sobre cómo detectar caras y emociones en imágenes utilizando Python y la librería OpenCV. Si eres un amante de la programación y del machine learning, este artículo te va a interesar mucho.

¿Qué es OpenCV?

OpenCV significa «Open Source Computer Vision Library». Es una librería de código abierto de computer vision y machine learning escrita en C y C++. Esta librería ha sido diseñada para ser una herramienta que puedan usar tanto los aficionados como los profesionales. La versión de OpenCV para Python incluye cientos de algoritmos de computer vision y machine learning listos para ser usados.

Detección de caras

La detección de caras es uno de los problemas más comunes de computer vision. Con la ayuda de OpenCV, podemos detectar caras en imágenes de manera muy sencilla.

  import cv2

  face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
  img = cv2.imread('img.jpg')
  gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
  faces = face_cascade.detectMultiScale(gray, 1.3, 5)

  for (x,y,w,h) in faces:
      cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
  cv2.imshow('img',img)
  cv2.waitKey()

Explicando el código

Primero, importamos la librería OpenCV. Luego, cargamos un archivo XML que contiene el modelo de detección de caras.

Después, cargamos una imagen y la convertimos a escala de grises. Usando la función detectMultiScale(), detectamos las caras en la imagen y guardamos las regiones interesantes en una lista.

Finalmente, recorremos la lista y dibujamos un rectángulo alrededor de cada cara detectada. Mostramos la imagen con los rectángulos dibujados usando la función imshow(), y esperamos a que el usuario presione cualquier tecla para cerrar la ventana de visualización.

Detección de emociones

Además de la detección de caras, también podemos utilizar OpenCV para detectar emociones a partir de imágenes faciales. Los pasos son muy similares a los que explicamos anteriormente.

  import cv2
  import numpy as np

  img = cv2.imread('img.jpg')
  face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
  eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')
  smile_cascade = cv2.CascadeClassifier('haarcascade_smile.xml')

  gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
  faces = face_cascade.detectMultiScale(gray, 1.3, 5)

  for (x,y,w,h) in faces:
      cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
      roi_gray = gray[y:y+h, x:x+w]
      roi_color = img[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)
      smiles = smile_cascade.detectMultiScale(roi_gray, 1.8, 20)
      for (sx,sy,sw,sh) in smiles:
          cv2.rectangle(roi_color,(sx,sy),(sx+sw,sy+sh),(0,0,255),2)

  cv2.imshow('img',img)
  cv2.waitKey()

Explicando el código

Esta vez, además de cargar el modelo de detección de caras, cargamos los modelos de detección de ojos y sonrisas.

Después de detectar las caras en la imagen, creamos un rectángulo alrededor de cada cara. Luego, detectamos los ojos en cada cara, utilizando un rectángulo verde para mostrar cada ojo encontrado.

En último lugar, detectamos las sonrisas en cada cara, utilizando un rectángulo rojo para mostrar cada sonrisa detectada.

Bueno, amigos, espero que hayan disfrutado de este tutorial sobre cómo detectar caras y emociones en imágenes utilizando Python y la librería OpenCV.

Recuerden siempre hacer pruebas con diferentes imágenes y ajustar los parámetros según las necesidades de cada proyecto. ¡Hasta la próxima!

No te pierdas los últimos artículos:

Web Scraping con Python y BeautifulSoup para Principiantes

Bienvenido a esta guía sobre Web Scraping con Python y BeautifulSoup, diseñada especialmente para principiantes. Si estás buscando aprender a extraer datos de sitios web de manera eficiente, seguro que ...

Curso de Python Básico Gratis

Módulo 1: Introducción a Python Nuestra meta principal es que, al final de este curso, tengas una sólida comprensión de los fundamentos de Python y estés listo para crear tus ...

Sistemas Expertos: ¿Qué son y para qué sirven?

Los sistemas expertos representan una rama fascinante de la inteligencia artificial, diseñada para emular la toma de decisiones de un humano experto en un campo particular. Estas herramientas avanzadas combinan ...

La Historia de la Inteligencia Artificial contada en Años

¿Cómo comenzó todo? Echemos un ojo a la historia de la IA a lo largo del tiempo. Desde 1950 hasta 2024. El artículo es largo, usa la tabla de contenidos ...

¿Qué es el meta-aprendizaje?

El mundo de la Inteligencia Artificial (IA) está en constante evolución, y una de las áreas más intrigantes y prometedoras es el metaaprendizaje. Pero, ¿qué es exactamente el metaaprendizaje y ...
Cargando...