本文共 2040 字,大约阅读时间需要 6 分钟。
//递归读取目录下全部文件(flag为r的时候递归) void getFiles(string path, vector<string>& files,string flag){ struct _finddata_t fileinfo; if((hFile = _findfirst(p.assign(path).append("\\*").c_str(),&fileinfo)) != -1){ if((fileinfo.attrib & _A_SUBDIR)){ if(strcmp(fileinfo.name,".") != 0 && strcmp(fileinfo.name,"..") != 0 && flag=="r") getFiles( p.assign(path).append("\\").append(fileinfo.name), files,flag ); files.push_back(p.assign(path).append("\\").append(fileinfo.name) ); }while(_findnext(hFile, &fileinfo) == 0); }
void getFiles(string path, vector<Mat>& files,string flag){ vector<string> fileNames; getFiles(path,fileNames,flag); for (int i=0;i<fileNames.size();i++){ Mat tmp = imread(fileNames[i]); } void getFiles(string path, vector<pair<Mat,string>>& files,string flag){ vector<string> fileNames; getFiles(path,fileNames,flag); for (int i=0;i<fileNames.size();i++){ Mat tmp = imread(fileNames[i]); apir.second = fileNames[i]; } 在结合MFC的程序设计中,经常涉及到图片文件输入输出的情况。所以我编写集成了一些算法,在这个方面进行增强。getFiles函数能够递归地读取某个目录下面所有文件的据对路径。这样就能够一次性获得所有的图片;对getFiles进行重载,这样能够直接将图片读入mat,或者读入pair<Mat,string>,更加方便。 可能你会问,既然已经读入Mat了,但是为什么还要读出pair<Mat,string>了?这是因为很多时候在获得图片的时候还需要获得图片的名称。 void deleteFiles(string path,string flag){ struct _finddata_t fileinfo; if((hFile = _findfirst(p.assign(path).append("\\*").c_str(),&fileinfo)) != -1){ if((fileinfo.attrib & _A_SUBDIR)){ if(strcmp(fileinfo.name,".") != 0 && strcmp(fileinfo.name,"..") != 0 && flag=="r") deleteFiles(p.assign(path).append("\\").append(fileinfo.name).c_str(),flag ); deleteFiles(p.assign(path).append("\\").append(fileinfo.name).c_str()); }while(_findnext(hFile, &fileinfo) == 0); } 目前方向:图像拼接融合、图像识别 联系方式:jsxyhelu@foxmail.com
转载地址:http://gfkul.baihongyu.com/