一、人脸识别算法之特征脸方法(Eigenface)
1、原理介绍及数据收集
特征脸方法主要是基于PCA降维实现。
详细介绍和主要思想可以参考
http://blog.csdn.net/u010006643/article/details/46417127
上述博客的人脸数据库打不开了,大家可以去下面这个博客下载ORL人脸数据库
http://blog.csdn.net/xdzzju/article/details/50445160
下载后,ORL人脸数据库有40个人,每人10张照片。
2、流程
3、相关图示
4、代码
1 #include <opencv2/opencv.hpp> 2 #include <opencv2/face.hpp> 3 4 using namespace cv; 5 using namespace cv::face; 6 using namespace std; 7 8 //对原图归一化 9 Mat normal(Mat src, Mat dst) { 10 if (src.channels() == 1)//若原图单通道 11 normalize(src, dst, 0, 255, NORM_MINMAX, CV_8UC1); 12 else //否则,原图三通道 13 normalize(src, dst, 0, 255, NORM_MINMAX, CV_8UC3); 14 return dst; 15 } 16 17 void main() { 18 //读取文件,转换为数据流 19 string filename = string("at.txt"); 20 ifstream file(filename.c_str(), ifstream::in); 21 if (!file) 22 cout << "error" << endl; 23 24 string line, path, classlabel; 25 vector<Mat>image; 26 vector<int>labels; 27