mirror of
https://github.com/bendtherules/pytry.git
synced 2026-08-18 22:03:03 +00:00
60 lines
1.7 KiB
Python
60 lines
1.7 KiB
Python
from SimpleCV import *
|
|
import time
|
|
|
|
# This file shows you how to train Fisher Face Recognition
|
|
# Enter the names of the faces and the output file.
|
|
cam = Camera(0) # camera
|
|
names = ['Alice','Bob'] # names of people to recognize
|
|
outfile = "test.csv" #output file
|
|
waitTime = 10 # how long to wait between each training session
|
|
|
|
def getFaceSet(cam,myStr=""):
|
|
# Grab a series of faces and return them.
|
|
# quit when we press escape.
|
|
iset = ImageSet()
|
|
count = 0
|
|
disp = Display((640,480))
|
|
while disp.isNotDone():
|
|
img = cam.getImage()
|
|
fs = img.findHaarFeatures('face')
|
|
if( fs is not None ):
|
|
fs = fs.sortArea()
|
|
face = fs[-1].crop().resize(100,100)
|
|
fs[-1].draw()
|
|
iset.append(face)
|
|
count = count + 1
|
|
img.drawText(myStr,20,20,color=Color.RED,fontsize=32)
|
|
img.save(disp)
|
|
disp.quit()
|
|
return iset
|
|
|
|
# First make sure our camera is all set up.
|
|
#getFaceSet(cam,"Get Camera Ready! - ESC to Exit")
|
|
#time.sleep(5)
|
|
labels = []
|
|
imgs = []
|
|
# for each person grab a training set of images
|
|
# and generate a list of labels.
|
|
for name in names:
|
|
myStr = "Training for : " + name
|
|
iset = getFaceSet(cam,myStr)
|
|
imgs += iset
|
|
labels += [name for i in range(0,len(iset))]
|
|
time.sleep(waitTime)
|
|
|
|
# Create, train, and save the recognizer.
|
|
f = FaceRecognizer()
|
|
print f.train(imgs, labels)
|
|
f.save(outfile)
|
|
# Now show us the results
|
|
disp = Display((640,480))
|
|
while disp.isNotDone():
|
|
img = cam.getImage()
|
|
fs = img.findHaarFeatures('face')
|
|
if( fs is not None ):
|
|
fs = fs.sortArea()
|
|
face = fs[-1].crop().resize(100,100)
|
|
fs[-1].draw()
|
|
name, confidence = f.predict(face)
|
|
img.drawText(name,30,30,fontsize=64)
|
|
img.save(disp) |