2014-02-14 2 views
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를 사용하지만, 파일 I라는 이름의 폴더에 수백 개의 이미지가

나는 파일을 반복하는 dirent.h를 사용하고 있지만, 어떻게 든 dirent.h10.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 당신을 위해 그렇게 할 것입니다. 이것도 참조하십시오 : Does readdir() guarantee an order?

+0

오, 그래서 순서가 다릅니 까? 이것은 결국 나는 1.jpg, 3.jpg 등을 통해 반복 될 것임을 의미합니다. – farahm

+0

예, 결국 1.jpg 등이됩니다. – Unknown

+0

파일이 숫자가 아니라 이름순으로 * 영문자 순으로 정렬 된 것처럼 보입니다. 따라서 주문 1.jpg, 10.jpg, 105.jpg, 2.jpg. 올바른 어휘 순서로 원하면 숫자 뒤에 0을 붙입니다. –