Используя dirent.h, но файлы пропускаются

У меня есть несколько сотен изображений в папке с именем: 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;

}

1

Решение

Вам придется сортировать файлы самостоятельно, если вы хотите, чтобы они были в порядке, readdir не сделаю это для вас. Смотрите это также: Гарантирует ли readdir () заказ?

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]