linux dirent.h 实现getFiles
void getFiles(std::string root_dir, std::string ext, std::vector<std::string>& files) {DIR *dir;struct dirent *ptr;if ((dir = opendir(root_dir.c_str())) == NULL) {gLogInfo << "Open dir error..." << std::endl;return;}while ((ptr = readdir(dir)) != NULL) {if (strcmp(ptr->d_name,".") == 0 || strcmp(ptr->d_name,"..") == 0) {continue;} else if(ptr->d_type == 8) {// filechar* dot = strchr(ptr->d_name, '.');if (dot && !strcasecmp(dot, ext.c_str())) {std::string filename(root_dir);filename.append("/").append(ptr->d_name);files.push_back(filename);}} else if(ptr->d_type == 10) { // link filecontinue;} else if(ptr->d_type == 4) {// dirstd::string dir_path(root_dir);dir_path.append("/").append(ptr->d_name);getFiles(dir_path.c_str(), ext, files);}}closedir(dir);}
std::vector<std::string> filenames;
filenames.reserve(20480);
for (size_t i = 0; i < onnx_args.dataDirs.size(); i++) {
getFiles(onnx_args.dataDirs[i], ".jpg", filenames);
}
