mirror of
https://github.com/opencv/opencv.git
synced 2024-11-25 03:30:34 +08:00
added class Directory
This commit is contained in:
parent
36967575be
commit
af730e4bff
@ -605,6 +605,14 @@ namespace cv
|
||||
};
|
||||
|
||||
CV_EXPORTS void polyfit(const Mat& srcx, const Mat& srcy, Mat& dst, int order);
|
||||
|
||||
class CV_EXPORTS Directory
|
||||
{
|
||||
public:
|
||||
static std::vector<std::string> GetListFiles ( const string& directoryName, bool addPath = true );
|
||||
static std::vector<std::string> GetListFilesR ( const string& directoryName, bool addPath = true );
|
||||
static std::vector<std::string> GetListFolders( const string& directoryName, bool addPath = true );
|
||||
};
|
||||
}
|
||||
|
||||
#include "opencv2/contrib/retina.hpp"
|
||||
|
132
modules/contrib/src/inputoutput.cpp
Normal file
132
modules/contrib/src/inputoutput.cpp
Normal file
@ -0,0 +1,132 @@
|
||||
|
||||
#include "opencv2/contrib/contrib.hpp"
|
||||
|
||||
#ifdef WIN32
|
||||
#include <windows.h>
|
||||
#include <tchar.h>
|
||||
#else
|
||||
#include <direct.h>
|
||||
#endif
|
||||
|
||||
namespace cv
|
||||
{
|
||||
std::vector<std::string> Directory::GetListFiles( const string& directoryName, bool addPath )
|
||||
{
|
||||
std::vector<std::string> list;
|
||||
list.clear();
|
||||
std::string path = directoryName + "/*";
|
||||
#ifdef WIN32
|
||||
WIN32_FIND_DATA FindFileData;
|
||||
HANDLE hFind;
|
||||
|
||||
hFind = FindFirstFile((LPCSTR)path.c_str(), &FindFileData);
|
||||
if (hFind == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
return list;
|
||||
}
|
||||
else
|
||||
{
|
||||
do
|
||||
{
|
||||
if (FindFileData.dwFileAttributes == FILE_ATTRIBUTE_NORMAL ||
|
||||
FindFileData.dwFileAttributes == FILE_ATTRIBUTE_ARCHIVE ||
|
||||
FindFileData.dwFileAttributes == FILE_ATTRIBUTE_HIDDEN ||
|
||||
FindFileData.dwFileAttributes == FILE_ATTRIBUTE_SYSTEM ||
|
||||
FindFileData.dwFileAttributes == FILE_ATTRIBUTE_READONLY)
|
||||
{
|
||||
if (addPath)
|
||||
list.push_back(directoryName + "/" + FindFileData.cFileName);
|
||||
else
|
||||
list.push_back(FindFileData.cFileName);
|
||||
}
|
||||
}
|
||||
while(FindNextFile(hFind, &FindFileData));
|
||||
FindClose(hFind);
|
||||
}
|
||||
#else
|
||||
DIR *dp;
|
||||
struct dirent *dirp;
|
||||
if((dp = opendir(directoryName.c_str())) == NULL)
|
||||
{
|
||||
return list;
|
||||
}
|
||||
|
||||
while ((dirp = readdir(dp)) != NULL)
|
||||
{
|
||||
if (dirp->d_type == DT_REG)
|
||||
list.push_back(static_cast<string>(dirp->d_name));
|
||||
}
|
||||
closedir(dp);
|
||||
#endif
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
std::vector<std::string> Directory::GetListFolders( const string& directoryName, bool addPath )
|
||||
{
|
||||
std::vector<std::string> list;
|
||||
std::string path = directoryName + "/*";
|
||||
list.clear();
|
||||
#ifdef WIN32
|
||||
WIN32_FIND_DATA FindFileData;
|
||||
HANDLE hFind;
|
||||
|
||||
hFind = FindFirstFile((LPCSTR)path.c_str(), &FindFileData);
|
||||
if (hFind == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
return list;
|
||||
}
|
||||
else
|
||||
{
|
||||
do
|
||||
{
|
||||
if (FindFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY &&
|
||||
strcmp(FindFileData.cFileName, ".") != 0 &&
|
||||
strcmp(FindFileData.cFileName, "..") != 0)
|
||||
{
|
||||
if (addPath)
|
||||
list.push_back(directoryName + "/" + FindFileData.cFileName);
|
||||
else
|
||||
list.push_back(FindFileData.cFileName);
|
||||
}
|
||||
}
|
||||
while(FindNextFile(hFind, &FindFileData));
|
||||
FindClose(hFind);
|
||||
}
|
||||
|
||||
#else
|
||||
DIR *dp;
|
||||
struct dirent *dirp;
|
||||
if((dp = opendir(path.c_str())) == NULL)
|
||||
{
|
||||
return list;
|
||||
}
|
||||
|
||||
while ((dirp = readdir(dp)) != NULL)
|
||||
{
|
||||
if (dirp->d_type == DT_DIR)
|
||||
list.push_back(static_cast<string>(dirp->d_name));
|
||||
}
|
||||
closedir(dp);
|
||||
#endif
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
std::vector<std::string> Directory::GetListFilesR ( const string& directoryName, bool addPath )
|
||||
{
|
||||
std::vector<std::string> list = Directory::GetListFiles(directoryName, addPath);
|
||||
|
||||
std::vector<std::string> dirs = Directory::GetListFolders(directoryName, addPath);
|
||||
|
||||
std::vector<std::string>::const_iterator it;
|
||||
for (it = dirs.begin(); it != dirs.end(); ++it)
|
||||
{
|
||||
std::vector<std::string> cl = Directory::GetListFiles(*it, addPath);
|
||||
list.insert(list.end(), cl.begin(), cl.end());
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user