Reputation: 1326
I have several hundred images in a folder named: 1.jpg
, 3.jpg
, 4.jpg
, 6.jpg
, 8.jpg
, 10.jpg
, 15. jpg
, .... 100.jpg
, 102.jpg
, 103.jpg
, 113.jpg
etc...
I am using dirent.h
to iterate through the files, but somehow dirent.h
starts at 10.jpg
and the next file it delivers is suddenly 100.jpg
and then 102.jpg
, ... why does it skip some images?
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;
}
Upvotes: 1
Views: 140
Reputation: 5772
You'll have to sort the files yourself if you want them in order, readdir
won't do that for you. See this also: Does readdir() guarantee an order?
Upvotes: 1