1
我有一個文件夾名爲幾百圖片: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
通過文件迭代,但不知何故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.jpg,3.jpg等。 – farahm
是的,它最終應該達到1.jpg等等。 – Unknown
看起來像按字母順序*按名稱排序文件,而不是按數字排序。因此命令1.jpg,10.jpg,105.jpg,2.jpg。如果你想讓它們按照正確的詞法順序排列,則用零作爲數字前綴。 –