Stap 8: Analyseren video te detecteren en herkennen van gezichten
We moeten in deze stap is een blik op het codefragment die neemt een enkel frame van de video opgenomen van de laatste stap en analyseert het voor elke gezichten met behulp van OpenCV functie cascadeClassifier. Als alle gezichten zijn gevonden, verzendt de bijgesneden deel van de afbeelding naar een andere functie vragen te voorspellen van het gezicht in de afbeelding.
De naam van het onderwerp / indringer wordt verzonden naar het codefragment in de vorige stap die een selectiekader rond het onderwerp tijdens het afdrukken naam van onderwerp trekt.
Nu de hele detectie en herkenning systeem heeft een nauwkeurigheid van slechts 70 tot 80 procent. Dus, in plaats van de naam van het onderwerp uitsluitend gebaseerd op huidige label te wijzigen, zullen we de laatste twintig etiketten in aanmerking. Dus we slaat de laatste twintig etiketten en vraagt om de meest herhaalde label uit die last_20 array. Wij nemen de naam van de indringer op deze manier en doorgeven aan de vorige stap die selectiekader trekt.
Code
Opmerking: Deze code is een klein deel van de voltooide code en individueel niet werkt. Ik heb het gebruikt hier om uit te leggen van de code.
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