Antes de empezar… ¿cómo funciona el reconocimiento facial de OpenCV?
Para legos: OpenCV utiliza un conjunto de “bloques” para reconocer formas llamados Haar-like features (“características de tipo Haar”. Sí, es una traducción pésima). Por ejemplo, algunas de estas formas pueden ser:
Este sistema tiene un porcentaje de aciertos bastante alto, aunque su éxito también dependerá del tipo de cámara utilizada, la iluminación de la sala, etc.
Código para Python
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
26
27
28
29
30
31
32
33
34
| #Ejemplo de deteccion facial con OpenCV y Python #Por Glare #www.robologs.net import numpy as np import cv2 #cargamos la plantilla e inicializamos la webcam: face_cascade = cv2.CascadeClassifier( 'haarcascade_frontalface_alt.xml' ) cap = cv2.VideoCapture( 0 ) while ( True ): #leemos un frame y lo guardamos ret, img = cap.read() #convertimos la imagen a blanco y negro gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #buscamos las coordenadas de los rostros (si los hay) y #guardamos su posicion faces = face_cascade.detectMultiScale(gray, 1.3 , 5 ) #Dibujamos un rectangulo en las coordenadas de cada rostro for (x,y,w,h) in faces: cv2.rectangle(img,(x,y),(x + w,y + h),( 125 , 255 , 0 ), 2 ) #Mostramos la imagen cv2.imshow( 'img' ,img) #con la tecla 'q' salimos del programa if cv2.waitKey( 1 ) & 0xFF = = ord ( 'q' ): break cap.release() cv2 - destroyAllWindows() |
Y ejecutamos nuestro código. Si todo ha funcionado bien, deberíamos ver nuestro careto dentro de un recuadro de color verde. Si no, intenta moverte o cambiar la iluminación de la habitación.
Si te surgió algún problema al seguir al tutorial no dudes en comentar y te responderé lo más rápido posible.