人脸识别之遍历ORL人脸文件

来源:互联网 发布:c语言左移右移 编辑:程序博客网 时间:2024/06/06 00:02

ORL人脸库共40个人,每人有10张照片。存储路径为 "ORL\\s1\\1.pgm",此文整理专用遍历ORL人脸文件代码
(1)代码备注:

bool traverseORL(vector<string> &filenames,vector<int> &labels,bool bTrain)    

/*function:read ORL files (eg. s1\1.pgm)parameter:--vector<string> &filenames : filepath--vector<int> &labels: the labels of faces--bool bTrain :true represents Train (No.1-No.5);               false represents Test(No.6-No.10)commentray: sprintf_s write the filepath to strFilename */

(2)代码实现:

bool traverseORL(vector<string> &filenames,vector<int> &labels,bool bTrain){  char strFilename[100];  int k=0;  for(int i=1;i<=40;i++) //40 filefolders{  if (bTrain) // true represents Train (No1-No5)  {for(int j=1;j<=5;j++){     sprintf_s(strFilename, "F:\\Visual2012\\klabTest\\klabTest\\ORL\\s%d\\%d.pgm", i,j); //sprintf_s write the filepath to strFilename      filenames.push_back( strFilename ); // vector labels.push_back( i );}  }  else // false represents Test(No.6-No.10)  {    for(int j=6;j<=10;j++){     sprintf_s(strFilename, "F:\\Visual2012\\klabTest\\klabTest\\ORL\\s%d\\%d.pgm", i,j); //sprintf_s write the filepath to strFilename      filenames.push_back( strFilename ); labels.push_back( i );}  } }  for(int i=0;i<filenames.size();i++)  cout<<filenames[i]<<endl; return true; }

(3)代码测试

   vector<Mat> faces;   vector<string> filenames;   vector<int> labels;   bool bTrain=true; //false;//true;      traverseORL(filenames,labels, bTrain);  //read ORL files (eg. s1\1.pgm->s40\1.pgm)
(4)测试结果