2 #include "opencv2/contrib/contrib.hpp"
13 std::vector<std::string> Directory::GetListFiles( const std::string& path, const std::string & exten, bool addPath )
15 std::vector<std::string> list;
17 std::string path_f = path + "/" + exten;
19 WIN32_FIND_DATA FindFileData;
22 hFind = FindFirstFile((LPCSTR)path_f.c_str(), &FindFileData);
23 if (hFind == INVALID_HANDLE_VALUE)
31 if (FindFileData.dwFileAttributes == FILE_ATTRIBUTE_NORMAL ||
32 FindFileData.dwFileAttributes == FILE_ATTRIBUTE_ARCHIVE ||
33 FindFileData.dwFileAttributes == FILE_ATTRIBUTE_HIDDEN ||
34 FindFileData.dwFileAttributes == FILE_ATTRIBUTE_SYSTEM ||
35 FindFileData.dwFileAttributes == FILE_ATTRIBUTE_READONLY)
38 list.push_back(path + "/" + FindFileData.cFileName);
40 list.push_back(FindFileData.cFileName);
43 while(FindNextFile(hFind, &FindFileData));
50 if((dp = opendir(path.c_str())) == NULL)
55 while ((dirp = readdir(dp)) != NULL)
57 if (dirp->d_type == DT_REG)
59 if (exten.compare("*") == 0)
60 list.push_back(static_cast<std::string>(dirp->d_name));
62 if (std::string(dirp->d_name).find(exten) != std::string::npos)
63 list.push_back(static_cast<std::string>(dirp->d_name));
72 std::vector<std::string> Directory::GetListFolders( const std::string& path, const std::string & exten, bool addPath )
74 std::vector<std::string> list;
75 std::string path_f = path + "/" + exten;
78 WIN32_FIND_DATA FindFileData;
81 hFind = FindFirstFile((LPCSTR)path_f.c_str(), &FindFileData);
82 if (hFind == INVALID_HANDLE_VALUE)
90 if (FindFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY &&
91 strcmp(FindFileData.cFileName, ".") != 0 &&
92 strcmp(FindFileData.cFileName, "..") != 0)
95 list.push_back(path + "/" + FindFileData.cFileName);
97 list.push_back(FindFileData.cFileName);
100 while(FindNextFile(hFind, &FindFileData));
108 if((dp = opendir(path_f.c_str())) == NULL)
113 while ((dirp = readdir(dp)) != NULL)
115 if (dirp->d_type == DT_DIR &&
116 strcmp(dirp->d_name, ".") != 0 &&
117 strcmp(dirp->d_name, "..") != 0 )
119 if (exten.compare("*") == 0)
120 list.push_back(static_cast<std::string>(dirp->d_name));
122 if (std::string(dirp->d_name).find(exten) != std::string::npos)
123 list.push_back(static_cast<std::string>(dirp->d_name));
132 std::vector<std::string> Directory::GetListFilesR ( const std::string& path, const std::string & exten, bool addPath )
134 std::vector<std::string> list = Directory::GetListFiles(path, exten, addPath);
136 std::vector<std::string> dirs = Directory::GetListFolders(path, exten, addPath);
138 std::vector<std::string>::const_iterator it;
139 for (it = dirs.begin(); it != dirs.end(); ++it)
141 std::vector<std::string> cl = Directory::GetListFiles(*it, exten, addPath);
142 list.insert(list.end(), cl.begin(), cl.end());