人脸识别

来源:互联网 发布:mysql 排序后limit 编辑:程序博客网 时间:2024/05/16 06:05
#-*- coding:utf-8 -*-from os import walk,pathimport numpy as npimport mahotas as mhfrom sklearn.cross_validation import train_test_splitfrom sklearn.cross_validation import cross_val_scorefrom sklearn.preprocessing import scalefrom sklearn.decomposition import PCAfrom sklearn.linear_model import LogisticRegressionfrom sklearn.metrics import classification_reportfrom matplotlib import pyplotimport Imageimport sysreload(sys)sys.setdefaultencoding('utf-8')'''img=Image.open('1.pgm').convert('L')print scale(img).reshape(10304)pyplot.imshow(img)pyplot.show()'''x=[]y=[]for dir_path,dir_names,file_names in walk('orl_faces'):    for fn in file_names:        if fn[-3:]=='pgm':            img_name=path.join(dir_path,fn)            x.append(scale(Image.open(img_name).convert('L')).reshape(10304).astype('float32'))            y.append(dir_path)x=np.array(x)y=np.array(y)x_train,x_test,y_train,y_test=train_test_split(x,y)pca=PCA(n_components=150)x_train_reduced=pca.fit_transform(x_train)x_test_reduced=pca.transform(x_test)classifier=LogisticRegression()classifier.fit(x_train,y_train)'''predicted=cross_val_score(classifier,x_train_reduced,y_train)print np.mean(predicted),predicted'''predicted=classifier.predict(x_test)for ypre,y in zip(predicted,y_test):    print '预测:'+ypre+' 真实:'+y