Salta el contingut

1. Detecció de rostres

En aquest apartat vas a treballar en un projecte autònom de detecció i reconeixement de rostres.

Aquest materials estan basat en el següent tutorial.

1.1. HaarCascade

La detecció de rostres amb Haar Cascadeés un mètode eficaç utilitzat en visió artificial i processament d’imatges. Proposat per Paul Viola i Michael Jones el 2001, aquest mètode es basa en classificadors en cascada entrenats amb funcions de Haar:

  • Es necessita un conjunt d’imatges positives (rostres) i negatives (sense rostres) per entrenar el classificador.
  • Les característiques de Haar són com nuclis convolucionals que s’apliquen a la imatge.
  • Les imatges integrals simplifiquen el càlcul de característiques.

Per sort podem trobar models de classificació entrenats ja a https://github.com/opencv/opencv/tree/master/data/haarcascades

1.2. Implementació amb OpenCV:

OpenCV proporciona un classificador preentrenat per a la detecció de rostres mitjançant Haar Cascade. Pots utilitzar-lo amb la funció cv2.CascadeClassifier.

Funcionament del classificador amb Python
Python
import cv2

# Carrega el classificador preentrenat
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')

# Llegeix la imatge
img = cv2.imread('imatge.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# Detecta rostres
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)

# Dibuixa rectangles al voltant dels rostres detectats
for (x, y, w, h) in faces:
    cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)

# Mostra la imatge amb els rostres detectats
cv2.imshow('Rostres detectats', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

2. Treball pràctic. Reconeixement facial

Anem a fer una pràctica de reconeixemnet facial. Possibles cassos d'ús d'aquest projecte serien:

  • Accés a la feina, treball
  • Control d'assistència
  • Detecció de gent no autoritzada