Opencv 从多个文件夹中读取多个图像
Opencv Reading Multiple images from Multiple folder
我有一个包含 100 个或更多子文件夹的文件夹,每个子文件夹包含很多图像。(Caltech 数据库)
我对如何从不同的文件夹中读取它们有疑问?
我想将它们存储为单个矩阵,每个图像都有堆叠列。
为 C++ 使用 Boost 文件系统。您可以加载目录中的所有文件,并将文件位置以字符串形式传递给 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。
我有一个包含 100 个或更多子文件夹的文件夹,每个子文件夹包含很多图像。(Caltech 数据库)
我对如何从不同的文件夹中读取它们有疑问?
我想将它们存储为单个矩阵,每个图像都有堆叠列。
为 C++ 使用 Boost 文件系统。您可以加载目录中的所有文件,并将文件位置以字符串形式传递给 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。