Intruder/gäst varningssystemet (8 / 10 steg)
Steg 8: Analysera videon för att identifiera och känna igen ansikten
I det här steget får vi en titt på det kodstycke som tar en ram av den video som spelats in från det sista steget och analyserar det för alla ansikten med hjälp av OpenCV-funktionen cascadeClassifier. Om alla ansikten hittas skickar den beskurna delen av bilden till en annan funktion ber att förutsäga ansiktet i bilden.
Namnet på ämnet / inkräktare som skickas till kodstycket i föregående steg som ritar en markeringsram runt ämnet samtidigt skriva ut namn av ämnet.
Just nu hela upptäckt och erkännandesystemet har en noggrannhet på 70 till 80 procent bara. Så, i stället för att ändra namnet på ämnet enbart baserad på nuvarande etikett, vi kommer att beakta de senast tjugo etiketterna. Så vi kommer att lagra de senast tjugo etiketterna och ber om mest upprepade etikett från last_20 matrisen. Vi kommer att ta namnet på inkräktaren hitåt och vidarebefordra till föregående steg som drar markeringsramen.
Koden
Obs: Denna kod är en liten del av ifyllda koden och fungerar inte individuellt. Jag har använt det här för att förklara koden.
def detect_faces(image):
'''
Tar en bild som indata och returnerar en matris med markeringsram kryss.
'''
frontal_face = cv2. CascadeClassifier("haarcascade_frontalface_default.xml")
bBoxes = frontal_face.detectMultiScale (bild, scaleFactor = 1,3, minNeighbors = 4, minstorlek = (30, 30), flaggor = cv. CV_HAAR_SCALE_IMAGE)
återgå bBoxes < /p >< p > def majority(mylist):
'''
Tar en lista och returnerar ett element som har högsta frekvens i listan given.
'''
myset = set(mylist)
ans = mylist [0]
ans_f = mylist.count(ans)
för jag i myset:
om mylist.count(i) > ans_f:
ans = jag
ans_f = mylist.count(i)
returnera ans