Search code examples
pythonimage-processingdeep-learningimage-recognition

I can't list the contents of the folder that contains the different images


I'm doing an image recognition application with deep learning but I can't find the different images that exist in each folder here the code

train_dir = 'C:/Users/dell/Documents/training_set/training_set'
test_dir = 'C:/Users/dell/Documents/test_set/test_set'

### Séparation des élements "dog" et "cat"

train_dogs = ['C:/Users/dell/Documents/training_set/training_set/{}'.format(i) for i in os.listdir(train_dir) if 'dog' in i] 
train_cats = ['C:/Users/dell/Documents/training_set/training_set/{}'.format(i) for i in os.listdir(train_dir) if 'cat' in i]  

#### On stocke les élements du jeu de test (liste de chemin) dans la variable test_imgs
test_imgs = ['C:/Users/dell/Documents/test_set/test_set/{}'.format(i) for i in os.listdir(test_dir)] 

when i execute the list is empty

train_dogs[1:10]
[]

train_dogs
['C:/Users/dell/Documents/training_set/training_set/dogs']


Solution

  • first the education

    os.listdir will return list of files/folders under the specified directory, it will not recursively list the whole directory and it's sub directories

    now the answer to your problem

    there are 2 options:

    1. suppose that we don't know the exact names of sub folders:
    train_dir = 'C:/Users/dell/Documents/training_set/training_set/'
    test_dir = 'C:/Users/dell/Documents/test_set/test_set/'
    
    train_folders = [train_dir + i + '/' for i in os.listdir(train_dir)]
    train_dogs = [i + j for i in train_folders for j in os.listdir(i) if 'dog' in i] 
    train_cats = [i + j for i in train_folders for j in os.listdir(i) if 'cat' in i] 
    
    test_imgs = ['C:/Users/dell/Documents/test_set/test_set/{}'.format(i) for i in os.listdir(test_dir)]
    
    1. as you described, we know the sub-directory names!
    train_dir = 'C:/Users/dell/Documents/training_set/training_set/'
    test_dir = 'C:/Users/dell/Documents/test_set/test_set/'
    
    train_dogs = [train_dir + 'dog/' + i for i in os.listdir(train_dir + 'dog')] 
    train_cats = [train_dir + 'cats/' + i for i in os.listdir(train_dir + 'cats')] 
    
    test_imgs = ['C:/Users/dell/Documents/test_set/test_set/{}'.format(i) for i in os.listdir(test_dir)]