caffe训练时根据文件名产生类别标号文件c++代码

来源:互联网 发布:ar3d什么软件 编辑:程序博客网 时间:2024/04/28 09:44

caffe训练时,图片分为test集和train集,图片如下:




要产生文件列表

格式如下:

test\300.jpg 3

test\301.jpg 3

test\400.jpg 4

test\401.jpg 4

test\500.jpg 5

test\501.jpg 5


代码如下: 

#include "stdafx.h"#include <string>#include <io.h>#include <vector>#include <iostream>using namespace std;/************************************************************************//*  获取文件夹下所有文件名输入:path:文件夹路径exd:   所要获取的文件名后缀,如jpg、png等;如果希望获取所有文件名, exd = ""输出:files:获取的文件名列表shao, 20140707*//************************************************************************/void getFiles(string path, string exd, vector<string>& files){//cout << "getFiles()" << path<< endl; //文件句柄long   hFile = 0;//文件信息struct _finddata_t fileinfo;string pathName, exdName;if (0 != strcmp(exd.c_str(), "")){exdName = "\\*." + exd;}else{exdName = "\\*";}if ((hFile = _findfirst(pathName.assign(path).append(exdName).c_str(), &fileinfo)) != -1){do{//cout << fileinfo.name << endl; //如果是文件夹中仍有文件夹,迭代之//如果不是,加入列表if ((fileinfo.attrib &  _A_SUBDIR)){if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0)getFiles(pathName.assign(path).append("\\").append(fileinfo.name), exd, files);}else{if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0)files.push_back(pathName.assign(path).append("\\").append(fileinfo.name));}} while (_findnext(hFile, &fileinfo) == 0);_findclose(hFile);}}void main(){cout << "create train and test file list" << endl;vector<string> files;char * filePath = "D:\\deep_learning\\caffe-windows-master\\data\\re\\test";//获取该路径下的所有jpg文件getFiles(filePath, "jpg", files);FILE* fp;string test_file = "D:\\deep_learning\\caffe-windows-master\\examples\\myfile\\test.txt";errno_t tOk = fopen_s(&fp, test_file.c_str(), "w");if (0 != tOk){cout << "fopen_s error:" << tOk << endl;return; }cout << test_file << endl; int size = files.size();for (int i = 0; i < size; i++){int pos = files[i].find_last_of("\\");string fname = files[i].substr(pos + 1);string f = fname.substr(0, 1);string row = "test\\" + fname + " " + f;if (i > 0){row = "\n" + row;}//cout << row << endl;fputs(row.c_str(), fp);//cout << "fx="<<files[i].c_str() << endl;}fclose(fp); char * filePath2 = "D:\\deep_learning\\caffe-windows-master\\data\\re\\train";//获取该路径下的所有jpg文件//先要清空一下files.clear(); getFiles(filePath2, "jpg", files); string train_file = "D:\\deep_learning\\caffe-windows-master\\examples\\myfile\\train.txt";tOk = fopen_s(&fp, train_file.c_str(), "w");if (0 != tOk){cout << "train_file fopen_s error:" << tOk << endl;return;}cout << train_file << endl;    size = files.size();cout << "train file size="<<size << endl;for (int i = 0; i < size; i++){int pos = files[i].find_last_of("\\");string fname = files[i].substr(pos + 1);string f = fname.substr(0, 1);string row = "train\\" + fname + " " + f;if (i > 0){row = "\n" + row;}//cout << row << endl;fputs(row.c_str(), fp);//cout << "fx="<<files[i].c_str() << endl;}fclose(fp);getchar();}


 

0 0