我有一个包含100个或更多子文件夹的文件夹,每个子文件夹包含许多图像。(Caltech数据库)
我对如何从不同文件夹中读取它们有疑问?
我想将它们存储为单个矩阵,每个图像都有堆叠列。
答案 0 :(得分:2)
使用Boost Filesystem for C ++。您可以加载目录中的所有文件,并将文件位置以字符串形式传递给OpenCV。
string folder = "../images/";
vector<string> imageFileLocations;
namespace fs = boost::filesystem;
vec v;
copy(fs::directory_iterator(folder), fs::directory_iterator(), back_inserter(v));
sort(v.begin(), v.end());
for (vec::const_iterator it(v.begin()); it != v.end(); ++it) {
if (fs::is_regular_file(*it)) {
string location = it->string();
imageFileLocations.push_back(location);
}
}
你必须添加一些递归的东西才能进入其他文件夹。你可以通过检查iteraotr是在文件还是文件夹来做到这一点。有关示例,请参阅Boost website。