【承接图像分类、检测、分割、生成相关项目,私信。】
读取文件夹下的所有图片
代码功能:读取文件夹下的所有文件,获得其路径
代码:
#include <io.h>
#include <string>
#include <vector>
#include <sstream>
using namespace std;
vector<string> listDir(string path);
vector<string> listFile(string path, string format);
void GetAllFormatFiles(string path, vector<string>& files, string format);
int main(){
string gallery_path = "E:\\Dataset\\gallery";
string probe_path = "E:\\Dataset\\probe";
vector<string> gallery_folders = listDir(gallery_path);
for (int g = 0; g < gallery_folders.size(); g++) {
vector<string> image_list = listFile(gallery_path + "\\" + gallery_folders.at(g), "jpg");
for (int f = 0; f < image_list.size(); f++) {
cout << gallery_path + "\\" + gallery_folders.at(g) + "\\" + image_list.at(f) << endl;
}
}
}
vector<string> listDir(string path) {
vector<string> dirpath;
//文件句柄
intptr_t 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){
dirpath.push_back(p.assign(fileinfo.name));
}
}
} while (_findnext(hFile, &fileinfo) == 0);
_findclose(hFile);
}
return dirpath;
}
vector<string> listFile(string path, string format) {
vector<string> files;
//文件句柄
intptr_t hFile = 0;
//文件信息
struct _finddata_t fileinfo;
string p;
if ((hFile = _findfirst(p.assign(path).append("/*." + format).c_str(), &fileinfo)) != -1)
{
do
{
if ((fileinfo.attrib & _A_SUBDIR))
{
if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0)
{
//files.push_back(p.assign(path).append("\\").append(fileinfo.name) );
GetAllFormatFiles(p.assign(fileinfo.name), files, format);
}
}
else
{
files.push_back(p.assign(fileinfo.name)); //将文件路径保存,也可以只保存文件名: p.assign(path).append("\\").append(fileinfo.name)
}
} while (_findnext(hFile, &fileinfo) == 0);
_findclose(hFile);
}
return files;
}
//获取特定格式的文件名
void GetAllFormatFiles(string path, vector<string>& files, string format){
files.clear();
//文件句柄
intptr_t hFile = 0;
//文件信息
struct _finddata_t fileinfo;
string p;
if ((hFile = _findfirst(p.assign(path).append("/*." + format).c_str(), &fileinfo)) != -1)
{
do
{
if ((fileinfo.attrib & _A_SUBDIR))
{
if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0)
{
//files.push_back(p.assign(path).append("\\").append(fileinfo.name) );
GetAllFormatFiles(p.assign(path).append("/").append(fileinfo.name), files, format);
}
}
else
{
files.push_back(p.assign(fileinfo.name)); //将文件路径保存,也可以只保存文件名: p.assign(path).append("\\").append(fileinfo.name)
}
} while (_findnext(hFile, &fileinfo) == 0);
_findclose(hFile);
}
}