2015-01-12 80 views
0

多个图像我有一个包含100个或更多的子文件夹,一个文件夹,每个都包含许多图像。(加州理工学院数据库)opencv的阅读从多个文件夹

我有如何从不同的文件夹阅读的问题?

我想将它们存储为每个图像的堆叠柱的单个矩阵。

回答

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

+0

谢谢,我用back_inserter来做递归的事情。它效果很好。 – user3515225