C++读取文件夹下多个文件,包括图片等等
话不多说,直接上代码:
int main()
{//读入图片路径下的所有文件,D:\APP\VS\vs_projects_repos\Isp\imagesstring imgdirpath="D:\\APP\\VS\\vs_projects_repos\\Isp\\proimages\\";// 只读取文件夹下的png的文件名,也可以改成“*.bmp”或者其他格式string imgpath = imgdirpath + "*.png"; vector<String> filesVec;//注意只是读取存储文件名的具体路径,不是读取文件//遍历文件夹,两个参数分别表示文件的路径和保存图像具体路径的Vector容器。glob(imgpath, filesVec);if (filesVec.size() == 0){cout << "File is empty!" << endl;return -1;}//此时,filesVec[]里面已经存放了具体到文件夹下各个文件名的路径//利用循环读取图片进行处理,换成自己想要处理的函数for (int i = 0; i < filesVec.size(); i++){cout <<endl<< filesVec[i] <<" processing···"<< endl;Mat dst=imread(filesVec[i]);//读取自行处理//如何把处理的多张Mat图片再存到文件夹中可以看下面}return 0;
}
vector<String> filesVec在glob()赋值后,filesVec[i]为string类型,如果需要改成char型才能处理,例如有一个自定义函数void rawread(const char* filename),可以在上面的循环加入如下操作:
//将 string 类型的变量转换为 const char* 类型的参数Mat src = rawread(filesVec[i].c_str());//
对于如何把处理的多张Mat图片再存到文件夹中可以参考:http://t.csdn.cn/N3n1k