Tanışma faslı..
Antreman faslı..
Tanıma faslı..
Klasör ve Dosya yapımız şöyle:
https://github.com/opencv/opencv/blob/master/data/haarcascades/haarcascade_frontalface_default.xml
buradaki xml dosyasını alıp
yuz.xml olarak kayıt edelim
KutuphaneOlustur.py içeriğimiz:
===================================
import numpy as np
import cv2
import time
import win32gui
detector = cv2.CascadeClassifier('yuz.xml')
cam = cv2.VideoCapture(0)
ks = open("kisiler.txt","r"); kisiler = ks.read(); ks.close()
kisiler = kisiler.split('\n')
sonno = len(kisiler); kayitno = sonno + 1
isimler=[]
for kisi in kisiler:
no, isim = kisi.split(':')
isimler.append(isim)
def KontrolKayit(yeniad):
if not yeniad in isimler:
ky = open("kisiler.txt","a"); ky.write(str("\n"+str(kayitno)+":"+str(yeniad))); ky.close()
else:
yeniad = raw_input(u'Bu isimde birini tanıyorum. \n Karışmaması için Soyisim vb. alabilir miyim: ')
KontrolKayit(yeniad)
#+++++++++++++++++++++++++++++++++++++++++++++++++++
yeniad = raw_input(u'Tanışalım isminiz nedir?: ')
KontrolKayit(yeniad)
Id=kayitno
time.sleep(1)
sampleNum = 0
while 1:
ret, img = cam.read()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = detector.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
time.sleep(.5)
#kisinin cok sayida resmini kayit
sampleNum = sampleNum+1
cv2.imwrite("dataSet/User."+str(Id) +'.'+ str(sampleNum) + ".jpg", gray[y:y+h,x:x+w])
cv2.imshow('KutuphaneKayit',cv2.flip(img,1))
#wait for 100 miliseconds
if cv2.waitKey(10) & 0xFF == ord('q'):
break
# break if the sample number is morethan 20
elif sampleNum>20:
break
cam.release()
cv2.destroyAllWindows()
import Antreman
============================
Antreman.py içeriğimiz:
======================
import os
import cv2
import numpy as np
from PIL import Image
#creating a recognizer
recognizer = cv2.face.createLBPHFaceRecognizer()
path = 'dataSet'
def getImagesWithID(path):
imagePaths=[os.path.join(path, f) for f in os.listdir(path)]
faces=[]
IDs=[]
for imagePath in imagePaths:
faceImg = Image.open(imagePath).convert('L')
faceNp = np.array(faceImg, 'uint8')
ID=int(os.path.split(imagePath)[-1].split('.')[1])
print ID
faces.append(faceNp)
IDs.append(ID)
cv2.imshow('training', faceNp)
cv2.waitKey(5)
return np.array(IDs), faces
Ids, faces = getImagesWithID(path)
recognizer.train(faces, Ids)
if not os.path.exists('trainer'):
os.makedirs('trainer')
recognizer.save('trainer/training_data.yml')
cv2.destroyAllWindows()
============================
_ismenKisiTani.py içeriğimiz:
======================
import cv2
import numpy as np
import time
recognizer = cv2.face.createLBPHFaceRecognizer()
recognizer.load('trainer/training_data.yml')
cascadePath = "yuz.xml"
faceCascade = cv2.CascadeClassifier(cascadePath)
cam = cv2.VideoCapture(0)
#font = cv2.FONT_HERSHEY_SCRIPT_SIMPLEX
font = cv2.FONT_HERSHEY_DUPLEX
ks = open("kisiler.txt","r"); kisiler = ks.read(); ks.close()
kisiler = kisiler.split('\n')
sonno = len(kisiler)
isimler=[]
for kisi in kisiler:
no, isim = kisi.split(':')
isimler.append(isim)
while True:
ret, im =cam.read()
im = cv2.flip(im,1)
gray=cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
faces=faceCascade.detectMultiScale(gray, 1.2,5)
for(x,y,w,h) in faces:
cv2.rectangle(im,(x,y),(x+w,y+h),(225,0,0),2)
Id, conf = recognizer.predict(gray[y:y+h,x:x+w])
Id = isimler[Id-1]
if(conf<45 div="">45>
Id="-cikaramadim-"
cv2.putText(im,str(Id),(x,y-10),font,0.55,(0,255,0),1)
#cv2.cv.PutText(cv2.cv.fromarray(im),str(Id), (x,y+h),font, 255)
cv2.imshow('im',im)
k = cv2.waitKey(30) & 0xff
if (cv2.waitKey(30) & 0xFF==ord('q')) or (k == 27) :
break
cam.release()
cv2.destroyAllWindows()
============================