Πίνακας περιεχομένων:

Opencv Ανίχνευση προσώπου, εκπαίδευση και αναγνώριση: 3 βήματα
Opencv Ανίχνευση προσώπου, εκπαίδευση και αναγνώριση: 3 βήματα

Βίντεο: Opencv Ανίχνευση προσώπου, εκπαίδευση και αναγνώριση: 3 βήματα

Βίντεο: Opencv Ανίχνευση προσώπου, εκπαίδευση και αναγνώριση: 3 βήματα
Βίντεο: Identification of Elder Violence 2024, Νοέμβριος
Anonim
Opencv Ανίχνευση προσώπου, εκπαίδευση και αναγνώριση
Opencv Ανίχνευση προσώπου, εκπαίδευση και αναγνώριση

Το OpenCV είναι μια βιβλιοθήκη οπτικών υπολογιστών ανοιχτού κώδικα, η οποία είναι πολύ δημοφιλής για την εκτέλεση βασικών εργασιών επεξεργασίας εικόνας, όπως θόλωση, ανάμειξη εικόνας, βελτίωση εικόνας καθώς και ποιότητα βίντεο, κατώφλι κ.λπ. Εκτός από την επεξεργασία εικόνας, παρέχει διάφορες προ-εκπαιδευμένες βαθιές γνώσεις μοντέλα που μπορούν να χρησιμοποιηθούν απευθείας για την επίλυση απλών εργασιών.

για εγκατάσταση opencv χρησιμοποιήστε αυτόν τον σύνδεσμο

www.instructables.com/id/Opencv-and-Python…

Βήμα 1: Ανίχνευση προσώπου σε βίντεο σε πραγματικό χρόνο

μπορείτε να κάνετε αναζήτηση στο google για πολλά προγράμματα ανίχνευσης προσώπου και τα πρόσωπα που εντοπίστηκαν θα πρέπει να αποθηκευτούν σε ένα φάκελο για περαιτέρω επεξεργασία εικόνας, όπως εκπαίδευση και επισήμανση. θα συλλέξουμε 30 δείγματα

εισαγωγή cv2

εισαγωγή numpy ως np

import os import sys

κάμερα = cv2. VideoCapture (0)

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml") #προσθήκη της διαδρομής του αρχείου σας

όνομα = raw_input ("Πώς τον λένε;")

#όλα τα αρχεία θα αποθηκευτούν στο φάκελο Users/prasad/Documents/images

dirName = "/Users/prasad/Documents/images/" + όνομα

εκτύπωση (dirName), αν όχι os.path.exists (dirName): os.makedirs (dirName) print ("Directory Created") else: print ("Name ήδη υπάρχει") sys.exit ()

μέτρηση = 1

#πρόκειται να συλλέξουμε 30 δείγματα

ενώ μέτρηση 30: break # frame = frame.array grey = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) πρόσωπα = faceCascade.detectMultiScale (γκρι, 1,5, 5) για (x, y, w, h) στα πρόσωπα: roiGray = γκρι [y: y + h, x: x + w] fileName = dirName + "/" + name + str (count) + ".jpg" cv2.imwrite (fileName, roiGray) cv2.imshow ("face", roiGray) cv2. rectangle (frame, (x, y), (x+w, y+h), (0, 255, 0), 2) count+= 1 cv2.imshow ('frame', frame) key = cv2.waitKey (1)

αν κλειδί == 27:

Διακοπή

#camera.release ()

cv2.destroyAllWindows ()

Βήμα 2: Εκπαίδευση των δειγμάτων εικόνων σας

Αφού ολοκληρωθεί η Ανίχνευση Προσώπου, μπορούμε να πάμε για εκπαίδευση των εικόνων

import osimport numpy as np from PIL import Image Image import cv2 import pickle #import serial

#ser = serial. Serial ('/dev/ttyACM0', 9600, timeout = 1)

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml")

αναγνωριστής = cv2.face. LBPHFaceRecognizer_create ()

baseDir = os.path.dirname (os.path.abspath (_ αρχείο_))

#εκπαιδεύστε τις εικόνες κάτω από το φάκελο εικόνες

imageDir = os.path.join (baseDir, "εικόνες")

currentId = 1

labelIds = {} yLabels = xTrain = #ser.write ("Εκπαίδευση…..". κωδικοποίηση ())

για root, dirs, αρχεία στο os.walk (imageDir):

εκτύπωση (root, dirs, files) για αρχείο σε αρχεία: print (file) if file.endswith ("png") ή file.endswith ("jpg"): path = os.path.join (root, file) label = os.path.basename (root) εκτύπωση (ετικέτα)

αν δεν υπάρχει ετικέτα στο labelIds:

labelIds [label] = currentId print (labelIds) currentId += 1

id_ = labelIds [label]

pilImage = Image.open (path).convert ("L") imageArray = np.array (pilImage, "uint8") face = faceCascade.detectMultiScale (imageArray, scaleFactor = 1.1, minNeighbors = 5)

για (x, y, w, h) στα πρόσωπα:

roi = imageArray [y: y+h, x: x+w] xTrain.append (roi) yLabels.append (id_)

με ανοιχτό ("ετικέτες", "wb") ως f:

pickle.dump (labelIds, f) f.close ()

αναγνωριστικό τρένο (xTrain, np.array (yLabels))

αναγνώριση.αποθήκευση ("trainer.yml") εκτύπωση (labelIds)

Βήμα 3: Αναγνώριση προσώπων

αφού τελείωσε η εκπαίδευση τώρα μπορείτε να εκτελέσετε τον παρακάτω κώδικα έτσι ώστε να αρχίσει να αναγνωρίζει τα εκπαιδευμένα πρόσωπά σας

εισαγωγή osos.environ ['PYTHONINSPECT'] = 'on' import cv2 import numpy as np import pickle #import RPi. GPIO as GPIO from time import sleep sleep

με ανοιχτό («ετικέτες», «rb») ως f:

dicti = pickle.load (f) f.close ()

κάμερα = cv2. VideoCapture (0)

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml")

αναγνωριστικό = cv2.face. LBPHFaceRecognizer_create () αναγνωριστικό διάβασμα ("trainer.yml")

font = cv2. FONT_HERSHEY_SIMPLEX

τελευταίο ="

#for frame in camera.capture_continuous (rawCapture, format = "bgr", use_video_port = True):

while True: ret, frame = camera.read () gray = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) πρόσωπα = faceCascade.detectMultiScale (γκρι, scaleFactor = 1,5, minNeighbours = 5) για (x, y, w, h) σε πρόσωπα: roiGray = γκρι [y: y+h, x: x+w]

id_, conf = αναγνωριστικό.predict (roiGray)

για όνομα, τιμή στο dicti.items ():

if value == id_: print (name) cv2.putText (frame, name, (x, y), font, 2, (0, 0, 255), 2, cv2. LINE_AA) if name! = last: last = όνομα αν conf <= 70: cv2.rectangle (πλαίσιο, (x, y), (x+w, y+h), (0, 255, 0), 2)

cv2.imshow («πλαίσιο», πλαίσιο)

κλειδί = cv2.waitKey (1)

αν κλειδί == 27:

break cv2.destroyAllWindows ()

Συνιστάται: