У меня есть несколько сотен изображений в папке с именем: 1.jpg
, 3.jpg
, 4.jpg
, 6.jpg
, 8.jpg
, 10.jpg
, 15. jpg
…. 100.jpg
, 102.jpg
, 103.jpg
, 113.jpg
так далее…
я использую dirent.h
перебирать файлы, но как-то dirent.h
начинается в 10.jpg
и следующий файл, который он доставляет, внезапно 100.jpg
а потом 102.jpg
… почему он пропускает некоторые изображения?
int main (int argc, const char* argv[] )
{
cv::Mat image;
DIR *dir;
struct dirent *ent;
if ((dir = opendir ("C:\\Users\\Faraz\\Desktop\\Project\\detecting_false_positives_stuff\\face_images\\faces\\")) != NULL) {
ent = readdir (dir);
printf ("%s\n", ent->d_name);
ent = readdir (dir);
printf ("%s\n", ent->d_name);
while ((ent = readdir (dir)) != NULL) {
printf ("%s\n", ent->d_name);
std::string fullPath = std::string("C:\\Users\\Faraz\\Desktop\\Project\\detecting_false_positives_stuff\\face_images\\faces\\") + ent->d_name;
cout<<fullPath;
image = cv::imread(fullPath);
...
}
closedir (dir);
}
return 1;
}
Вам придется сортировать файлы самостоятельно, если вы хотите, чтобы они были в порядке, readdir
не сделаю это для вас. Смотрите это также: Гарантирует ли readdir () заказ?
Других решений пока нет …