ORL人脸库的遍历及CSV按标准排序

在做人脸识别使用ORL人脸库进行训练时,往往会遇到遍历图片生成CSV文件来训练人脸。那么我来整理一下ORL人脸库的遍历及CSV按标准排序。

1.准备工作

 

1.ORL人脸库,动手去搜吧

2.动手解压到该名字的文件夹,不要直接解压到当前文件夹,不然会散成40个人脸文件夹

3.进入CMD窗口,切换到你解压的人脸库;输入命令:dir /b >name.xls

4.打开xls,就会如下图所示如果用下面的代码遍历,CSV文佳就会按照这个顺序排列,所以我们需要稍作处理,然后在C列输入:="ren "&A1&" "&B1&"",注意,这不是中文输入法下的双引号,建议手动输入。其实就是建议一行命令字符串,便于后面使用。

               

5.将C列的代码复制,新建文本,改后缀为.bat,编辑并保存,双击运行.bat即可;你会发现,1号还是1号,3号还是3号,这就是批量改名,改完后请把.xls与.bat删除,因为等会会遍历这个文件夹

2.代码工作

#define READ_CSV_FILE "at.txt",这是将要遍历到的CSV的文件,我只是要方便用,所以用宏定义

void travelFaceFile()
{
	int num = 1;
	char* filepath = "D:\\Temp\\ORLFaceData";
	vector<string> files;
	vector <int> labels;
	ofstream off(READ_CSV_FILE, ios::out);
	getFiles(filepath, files,labels,num);
	char str[30];
	int size = files.size();
	for (int i = 0; i < size; i++)
	{
		off << files[i].c_str();
		off << ";";
		off << labels[i];
		off << "\n";
	}
	off.close();
	return ;
}

下面这段代码就是网上流传较广的C++遍历ORL的文件代码,我只是将其修改成适合我用,你们可以参考 

void getFiles(string path, vector<string>&files, vector<int>&labels,int &num)
{
	long hFile = 0;
	
	struct _finddata_t fileinfo;
	string p;
	if ((hFile = _findfirst(p.assign(path).append("\\*").c_str(), &fileinfo)) != -1)
	{
		do
		{
			//如果是目录,迭代之  
            		//如果不是,加入列表  
			if ((fileinfo.attrib &_A_SUBDIR))
			{
				if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0)
				{
					getFiles(p.assign(path).append("\\").append(fileinfo.name), files,labels,num);
					num++;
				}	
			}
			else
			{
				files.push_back(p.assign(path).append("\\").append(fileinfo.name));
				labels.push_back(num);
			}
		} while (_findnext(hFile,&fileinfo)==0);
		_findclose(hFile);
	}
}		//如果不是,加入列表  
			if ((fileinfo.attrib &_A_SUBDIR))
			{
				if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0)
				{
					getFiles(p.assign(path).append("\\").append(fileinfo.name), files,labels,num);
					num++;
				}	
			}
			else
			{
				files.push_back(p.assign(path).append("\\").append(fileinfo.name));
				labels.push_back(num);
			}
		} while (_findnext(hFile,&fileinfo)==0);
		_findclose(hFile);
	}
}
 

收工了,你看项目下的at.txt ,就是按序排列了,就不用记label与Image的对应关系了


 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值