void get_unique_filenames_under_dir(const std::string& dir, std::map<std::string, std::string>* file_map, const std::string& prefix) { ASSERT_LOG(file_map != NULL, "get_unique_filenames_under_dir() passed a NULL file_map"); path p(dir); if(!is_directory(p)) { return; } for(recursive_directory_iterator it = recursive_directory_iterator(p); it != recursive_directory_iterator(); ++it) { if(!is_directory(it->path())) { (*file_map)[prefix + it->path().filename().generic_string()] = it->path().generic_string(); } } }
void ObjectLibrary::processFolder(const char* filepath) { // Create object library path library_path(filepath); if(is_directory(library_path)) { recursive_directory_iterator iter(library_path); recursive_directory_iterator end; while(iter != end) { if(is_directory(iter->path())) { object_idx.push_back(images.size()); object_names.push_back(iter->path().filename().generic_string()); //std::cout << "Object: " << object_names.back() << " " << object_idx.back() << std::endl; // Handle Symlink Directories if(is_symlink(iter->path())) { iter = recursive_directory_iterator(canonical(read_symlink(iter->path()), library_path)); } } else { // Initialize object feature Mat img_object = imread(iter->path().generic_string(), CV_LOAD_IMAGE_COLOR); if( !img_object.data ) { throw std::runtime_error("Error Reading Image"); } ImageData img = processImage(img_object); img.name = iter->path().stem().generic_string(); //std::cout << "Object: " << object_names.back() << " Image: " << img.name << std::endl; if(img.name == object_names.back()) { object_img_idx.push_back(images.size()); //std::cout << object_names.back() << " " << images.size() << std::endl; } //-- Step 3: Add to object library images.push_back(std::move(img)); } ++iter; } } //std::cout << "Num Objects: " << object_idx.size() << std::endl; }