Mündəricat:

Opencv Üz Tanıma, Təlim və Tanıma: 3 addım
Opencv Üz Tanıma, Təlim və Tanıma: 3 addım

Video: Opencv Üz Tanıma, Təlim və Tanıma: 3 addım

Video: Opencv Üz Tanıma, Təlim və Tanıma: 3 addım
Video: USE CASE Computer Vision - Keypoint Annotation Face 2024, Noyabr
Anonim
Opencv Üz Tanıma, Təlim və Tanıma
Opencv Üz Tanıma, Təlim və Tanıma

OpenCV, bulanıklaşdırma, şəkil qarışdırma, görüntü keyfiyyətinin artırılması, video keyfiyyəti, eşik və s. sadə vəzifələri həll etmək üçün birbaşa istifadə edilə bilən modellər.

opencv quraşdırılması üçün bu linki istifadə edin

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

Addım 1: Real Videoda Üzün Algılanması

bir çox üz tanıma proqramı üçün google -da axtarış edə bilərsiniz və aşkar edilmiş üzlər təlim və etiketləmə kimi şəkillərin işlənməsi üçün qovluqda saxlanılmalıdır. 30 nümunə toplayacağıq

idxal cv2

np kimi numpy idxal edin

idxal sistemi idxal edin

kamera = cv2. VideoCapture (0)

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml") #harcascade fayl yolunuzu əlavə edin

name = raw_input ("Adı nədir?")

#bütün fayllar İstifadəçilər/prasad/Sənədlər/şəkillər qovluğunda saxlanılacaq

dirName = "/İstifadəçilər/prasad/Sənədlər/şəkillər/" + adı

print (dirName) deyilsə os.path.exists (dirName): os.makedirs (dirName) print ("Directory Created") else: print ("Name is allaqachon var") sys.exit ()

say = 1

#30 nümunə toplayacağıq

30 sayında: break # frame = frame.array grey = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) faces = faceCascade.detectMultiScale (boz, 1.5, 5) üzlərində (x, y, w, h): roiGray = boz [y: y + h, x: x + w] fileName = dirName + "/" + name + str (count) + ".jpg" cv2.imwrite (fileName, roiGray) cv2.imshow ("üz", roiGray) cv2.dörtbucaq (çərçivə, (x, y), (x+w, y+h), (0, 255, 0), 2) count+= 1 cv2.imshow ('frame', frame) key = cv2. gözləyin açarı (1)

əgər açar == 27:

fasilə

#kamera.release ()

cv2.destroyAllWindows ()

Addım 2: Nümunə Şəkillərinizi Təlim edin

Üz Algılama tamamlandıqdan sonra şəkilləri öyrətməyə gedə bilərik

PIL idxaldan np olaraq osimport numpy idxal Şəkil idxal cv2 idxal turşu #idxal serial

#ser = serial. Serial ('/dev/ttyACM0', 9600, zaman aşımı = 1)

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

tanıyıcı = cv2.face. LBPHFaceRecognizer_create ()

baseDir = os.path.dirname (os.path.abspath (_ fayl_))

#şəkilləri qovluq altından öyrədin

imageDir = os.path.join (baseDir, "şəkillər")

currentId = 1

labelIds = {} yLabels = xTrain = #ser.write ("Təlim…..". kodla ())

os.walk -dakı kök, dirs, fayllar üçün (imageDir):

fayllardakı fayl üçün print (kök, dirs, fayllar): print (file) if file.endswith ("png") or file.endswith ("jpg"): path = os.path.join (root, file) label = os.path.basename (kök) çap (etiket)

labelIds etiketində deyilsə:

labelIds [label] = currentId çap (labelIds) currentId += 1

id_ = labelIds [etiket]

pilImage = Image.open (yol).convert ("L") imageArray = np.array (pilImage, "uint8") üzlər = faceCascade.detectMultiScale (imageArray, scaleFactor = 1.1, minNeighbors = 5)

üzlərdə (x, y, w, h) üçün:

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

açıq olaraq ("etiketlər", "wb") f olaraq:

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

tanıyıcı.train (xTrain, np.array (yLabels))

tanıyıcı.save ("trainer.yml") çap (labelIds)

Addım 3: Üzlərin tanınması

Təlim bitdikdən sonra aşağıdakı kodu işə sala bilərsiniz ki, təlim görmüş üzlərinizi tanımağa başlasın

idxal osos.environ ['PYTHONINSPECT'] = 'on' cv2 idxal nömrəsi np idxal turşusu olaraq #idxal RPi. GPIO vaxt idxal yuxusundan GPIO olaraq

açıq olaraq ('etiketlər', 'rb') f olaraq:

dicti = turşu yükü (f) f.close ()

kamera = cv2. VideoCapture (0)

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

tanıyıcı = cv2.face. LBPHFaceRecognizer_create () tanıyıcı. oxu ("trainer.yml")

font = cv2. FONT_HERSHEY_SIMPLEX

son = ''

#camera.capture_continuousdakı çərçivə üçün (rawCapture, format = "bgr", use_video_port = True):

while True: ret, frame = camera.read () grey = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) üzlər = faceCascade.detectMultiScale (boz, miqyasFactor = 1.5, minNeighbors = 5) (x, y, w, h) üçün üzlərdə: roiGray = boz [y: y+h, x: x+w]

id_, conf = tanıyıcı.predikt (roiGray)

adı üçün, dicti.items () dəyərində:

əgər dəyər == id_: print (ad) cv2.putText (çərçivə, ad, (x, y), font, 2, (0, 0, 255), 2, cv2. LINE_AA) əgər ad! = son: son = conf <= 70 olduqda ad: cv2.dörtgen (çərçivə, (x, y), (x+w, y+h), (0, 255, 0), 2)

cv2.imshow ('çərçivə', çərçivə)

açar = cv2.waitKey (1)

əgər açar == 27:

cv2.destroyAllWindows -u kəsin ()

Tövsiyə: