Paso 8: Analizar video para detectar y reconocer caras
En este paso, tenemos una mirada en el fragmento de código que toma un solo fotograma del vídeo grabado desde el último paso y los analiza para cualquier rostro con la ayuda de cascadeClassifier función de OpenCV. Si se encuentran cualquier caras, envía la parte recortada de la imagen a otra función para predecir la cara en la imagen.
El nombre del tema / intruso es enviado el fragmento de código en el paso anterior que dibuja un cuadro delimitador alrededor del tema mientras que la impresión del nombre del tema.
Ahora mismo la detección todo y sistema de reconocimiento tiene una precisión de 70 a 80 por ciento solamente. Así, en lugar de cambiar el nombre del tema basada únicamente en la etiqueta presente, tomamos las últimas veinte etiquetas en consideración. Así que nos guardará las últimas veinte etiquetas y pide etiqueta más repetida de esa matriz last_20. Tomaremos el nombre del intruso así y pasar a paso anterior que dibuja el recuadro.
Código
Nota: Este código es una pequeña parte del código terminado y no funciona individualmente. Lo he utilizado aquí para explicar el código.
def detect_faces(image): ''' Takes an image as input and returns an array of bounding box(es). ''' frontal_face= cv2.CascadeClassifier("haarcascade_frontalface_default.xml") bBoxes= frontal_face.detectMultiScale(image, scaleFactor=1.3, minNeighbors=4, minSize=(30, 30), flags = cv.CV_HAAR_SCALE_IMAGE) return bBoxes</p><p>def majority(mylist): ''' Takes a list and returns an element which has highest frequency in the given list. ''' myset= set(mylist) ans= mylist[0] ans_f= mylist.count(ans) for i in myset: if mylist.count(i)> ans_f: ans= i ans_f= mylist.count(i) return ans