|
|
|
@ -1,5 +1,6 @@ |
|
|
|
|
|
|
|
|
|
#include "opencv2/contrib/contrib.hpp" |
|
|
|
|
#include <cvconfig.h> |
|
|
|
|
|
|
|
|
|
#if defined(WIN32) || defined(_WIN32) |
|
|
|
|
#include <windows.h> |
|
|
|
@ -16,10 +17,22 @@ namespace cv |
|
|
|
|
list.clear(); |
|
|
|
|
std::string path_f = path + "/" + exten; |
|
|
|
|
#ifdef WIN32 |
|
|
|
|
WIN32_FIND_DATA FindFileData; |
|
|
|
|
HANDLE hFind; |
|
|
|
|
|
|
|
|
|
hFind = FindFirstFile((LPCSTR)path_f.c_str(), &FindFileData); |
|
|
|
|
#ifdef HAVE_WINRT |
|
|
|
|
WIN32_FIND_DATAW FindFileData; |
|
|
|
|
#else |
|
|
|
|
WIN32_FIND_DATAA FindFileData; |
|
|
|
|
#endif |
|
|
|
|
HANDLE hFind; |
|
|
|
|
|
|
|
|
|
#ifdef HAVE_WINRT |
|
|
|
|
size_t size = mbstowcs(NULL, path_f.c_str(), path_f.size()); |
|
|
|
|
Ptr<wchar_t> wpath = new wchar_t[size+1]; |
|
|
|
|
wpath[size] = 0; |
|
|
|
|
mbstowcs(wpath, path_f.c_str(), path_f.size()); |
|
|
|
|
hFind = FindFirstFileExW(wpath, FindExInfoStandard, &FindFileData, FindExSearchNameMatch, NULL, 0); |
|
|
|
|
#else |
|
|
|
|
hFind = FindFirstFileA((LPCSTR)path_f.c_str(), &FindFileData); |
|
|
|
|
#endif |
|
|
|
|
if (hFind == INVALID_HANDLE_VALUE) |
|
|
|
|
{ |
|
|
|
|
return list; |
|
|
|
@ -34,13 +47,26 @@ namespace cv |
|
|
|
|
FindFileData.dwFileAttributes == FILE_ATTRIBUTE_SYSTEM || |
|
|
|
|
FindFileData.dwFileAttributes == FILE_ATTRIBUTE_READONLY) |
|
|
|
|
{ |
|
|
|
|
cv::Ptr<char> fname; |
|
|
|
|
#ifdef HAVE_WINRT |
|
|
|
|
size_t asize = wcstombs(NULL, FindFileData.cFileName, 0); |
|
|
|
|
fname = new char[asize+1]; |
|
|
|
|
fname[asize] = 0; |
|
|
|
|
wcstombs(fname, FindFileData.cFileName, asize); |
|
|
|
|
#else |
|
|
|
|
fname = FindFileData.cFileName; |
|
|
|
|
#endif |
|
|
|
|
if (addPath) |
|
|
|
|
list.push_back(path + "/" + FindFileData.cFileName); |
|
|
|
|
list.push_back(path + "/" + std::string(fname)); |
|
|
|
|
else |
|
|
|
|
list.push_back(FindFileData.cFileName); |
|
|
|
|
list.push_back(std::string(fname)); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
while(FindNextFile(hFind, &FindFileData)); |
|
|
|
|
#ifdef HAVE_WINRT |
|
|
|
|
while(FindNextFileW(hFind, &FindFileData)); |
|
|
|
|
#else |
|
|
|
|
while(FindNextFileA(hFind, &FindFileData)); |
|
|
|
|
#endif |
|
|
|
|
FindClose(hFind); |
|
|
|
|
} |
|
|
|
|
#else |
|
|
|
@ -75,10 +101,22 @@ namespace cv |
|
|
|
|
std::string path_f = path + "/" + exten; |
|
|
|
|
list.clear(); |
|
|
|
|
#ifdef WIN32 |
|
|
|
|
WIN32_FIND_DATA FindFileData; |
|
|
|
|
#ifdef HAVE_WINRT |
|
|
|
|
WIN32_FIND_DATAW FindFileData; |
|
|
|
|
#else |
|
|
|
|
WIN32_FIND_DATAA FindFileData; |
|
|
|
|
#endif |
|
|
|
|
HANDLE hFind; |
|
|
|
|
|
|
|
|
|
hFind = FindFirstFile((LPCSTR)path_f.c_str(), &FindFileData); |
|
|
|
|
#ifdef HAVE_WINRT |
|
|
|
|
size_t size = mbstowcs(NULL, path_f.c_str(), path_f.size()); |
|
|
|
|
Ptr<wchar_t> wpath = new wchar_t[size+1]; |
|
|
|
|
wpath[size] = 0; |
|
|
|
|
mbstowcs(wpath, path_f.c_str(), path_f.size()); |
|
|
|
|
hFind = FindFirstFileExW(wpath, FindExInfoStandard, &FindFileData, FindExSearchNameMatch, NULL, 0); |
|
|
|
|
#else |
|
|
|
|
hFind = FindFirstFileA((LPCSTR)path_f.c_str(), &FindFileData); |
|
|
|
|
#endif |
|
|
|
|
if (hFind == INVALID_HANDLE_VALUE) |
|
|
|
|
{ |
|
|
|
|
return list; |
|
|
|
@ -87,17 +125,37 @@ namespace cv |
|
|
|
|
{ |
|
|
|
|
do |
|
|
|
|
{ |
|
|
|
|
#ifdef HAVE_WINRT |
|
|
|
|
if (FindFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY && |
|
|
|
|
wcscmp(FindFileData.cFileName, L".") != 0 && |
|
|
|
|
wcscmp(FindFileData.cFileName, L"..") != 0) |
|
|
|
|
#else |
|
|
|
|
if (FindFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY && |
|
|
|
|
strcmp(FindFileData.cFileName, ".") != 0 && |
|
|
|
|
strcmp(FindFileData.cFileName, "..") != 0) |
|
|
|
|
#endif |
|
|
|
|
{ |
|
|
|
|
cv::Ptr<char> fname; |
|
|
|
|
#ifdef HAVE_WINRT |
|
|
|
|
size_t asize = wcstombs(NULL, FindFileData.cFileName, 0); |
|
|
|
|
fname = new char[asize+1]; |
|
|
|
|
fname[asize] = 0; |
|
|
|
|
wcstombs(fname, FindFileData.cFileName, asize); |
|
|
|
|
#else |
|
|
|
|
fname = FindFileData.cFileName; |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
if (addPath) |
|
|
|
|
list.push_back(path + "/" + FindFileData.cFileName); |
|
|
|
|
list.push_back(path + "/" + std::string(fname)); |
|
|
|
|
else |
|
|
|
|
list.push_back(FindFileData.cFileName); |
|
|
|
|
list.push_back(std::string(fname)); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
while(FindNextFile(hFind, &FindFileData)); |
|
|
|
|
#ifdef HAVE_WINRT |
|
|
|
|
while(FindNextFileW(hFind, &FindFileData)); |
|
|
|
|
#else |
|
|
|
|
while(FindNextFileA(hFind, &FindFileData)); |
|
|
|
|
#endif |
|
|
|
|
FindClose(hFind); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|