(一)支持win32控制台程序
void processCharSize(string path)
{
//string path = "H:\\back\\data";
vector<string> files;
//文件句柄
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)
processCharSize( p.assign(path).append("\\").append(fileinfo.name)/*, files*/ );
}
else
{
//files.push_back(p.assign(path).append("\\").append(fileinfo.name) );
string newFileName = p.assign(path).append("\\").append(fileinfo.name);
Mat oldImg = imread(newFileName,0); // 0 代表读取的是灰度图像
threshold(oldImg,oldImg,THRESH_OTSU | THRESH_BINARY,1)
Mat newImg ;
//copyMakeBorder(oldImg,newImg,2,2,2,2,BORDER_CONSTANT,Scalar(0));
//resize(newImg,newImg,Size(20,20)); // 图像边缘填充后,再resize到指定大小
copyMakeBorder(oldImg,newImg,1,3,1,3,BORDER_CONSTANT,Scalar(0));
resize(newImg,newImg,Size(20,20));
//resize(oldImg,newImg,Size(20,20)); // 直接将图像resize到指定大小
imwrite(newFileName,newImg);
}
}while(_findnext(hFile, &fileinfo) == 0);
_findclose(hFile);
}
}
void GenFileNameList( CString folder, vector<CString> &list )
{
folder.TrimRight('\\');
folder += '\\';
CString filename;
CFileFind finder;
BOOL bWork = finder.FindFile(folder+"*.*");
vector<CString> namelist;
while(bWork)
{
bWork = finder.FindNextFile();
if(finder.IsDirectory()==FALSE && !finder.IsDots())
{
filename =finder.GetFileName();
/*clazzInfo clazz;
clazz.id = subDir;
clazz.path = filename;*/
list.push_back(filename);
}
//bWork = finder.FindNextFile(); // bWork is zero if the file found is the last one
//if (/*finder.IsDirectory() &&*/ !finder.IsDots())
//{
// //open subdir
// CString subDir = finder.GetFileName();
// CFileFind subFinder;
// BOOL subBWork = subFinder.FindFile(folder+subDir+"\\"+"*.*");
// while (subBWork)
// {
// subBWork = subFinder.FindNextFile();
// if(subFinder.IsDirectory()==FALSE && !subFinder.IsDots())
// {
// filename =subFinder.GetFileName();
// /*clazzInfo clazz;
// clazz.id = subDir;
// clazz.path = filename;*/
// list.push_back(filename);
// }
// }
// subFinder.Close();
//}
}
finder.Close();
}
非注释部分支持单层文件夹下的文件遍历,注释掉的部分支持文件夹嵌套。