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)