2015-01-12 2 views
0

У меня есть папка, которая содержит 100 или более вложенных папок, и каждая из них содержит много изображений. (Caltech Database)OpenCV Чтение нескольких изображений из нескольких папки

У меня есть проблема с тем, как читать их из разных папок?

Я хочу хранить их как единую матрицу с укладкой columms каждого изображения.

ответ

2

Использовать файловую систему Boost для 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

Смежные вопросы