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