How to read multiple images from multiple folders in python

17,966

An easy way would be to install Glob. You can do this from the anaconda prompt with pip install glob.

Glob allows you to query files like you would in a terminal. Once you have Glob you could save all of the file names to a list and then loop through this list reading your images (NumPy arrays) into a new list.

import cv2
import numpy
import glob

folders = glob.glob('path\\to\\folder\\containing\\folders\\*')
imagenames_list = []
for folder in folders:
    for f in glob.glob(folder+'/*.jpg'):
        imagenames_list.append(f)

read_images = []        
for image in imagenames_list:
    read_images.append(cv2.imread(image, cv2.IMREAD_GRAYSCALE))

You could then access an image by indexing it i.e.

plt.imshow(read_images[0])
Share:
17,966

Related videos on Youtube

aaku
Author by

aaku

Updated on June 04, 2022

Comments

  • aaku
    aaku almost 2 years

    I am writing an image recognition program in python 3.6 for which I am using anaconda.I have my image data set stored in the location E:\food-101\images in which the 'images' folder contains multiple sub folders which contain the photographs. I want to use these images for training my machine learning model.I am able to load(read) a single image stored in E:\ I want to load multiple images from the above path how do I proceed ?I am using opencv. my code is as follows any help is appreciated

    import cv2
    import matplotlib
    import numpy
    img = cv2.imread("E:\food\images\chicken_wings\a.jpg",cv2.IMREAD_GRAYSCALE)
    cv2.imshow('image',img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    I get the following error

    Traceback (most recent call last):
    
      File "<ipython-input-8-6310b5f3028e>", line 5, in <module>
        cv2.imshow('image',img)
    
    error: OpenCV(3.4.1) C:\bld\opencv_1520732670222\work\opencv-3.4.1\modules\highgui\src\window.cpp:356: error: (-215) size.width>0 && size.height>0 in function cv::imshow
    
    
    Traceback (most recent call last):
    
      File "<ipython-input-8-6310b5f3028e>", line 5, in <module>
        cv2.imshow('image',img)
    
    error: OpenCV(3.4.1) C:\bld\opencv_1520732670222\work\opencv-3.4.1\modules\highgui\src\window.cpp:356: error: (-215) size.width>0 && size.height>0 in function cv::imshow 
    
    • GPPK
      GPPK about 6 years
      Possible duplicate of load image with openCV Mat c++ - Im pretty sure you need backslashes in your image path and then it will work.
    • aaku
      aaku about 6 years
      I have no idea about c++
    • GPPK
      GPPK about 6 years
      It's nothing to do with C++, use C:\\... rather than c:\\. Read the answer
    • aaku
      aaku about 6 years
      Sorry I could not understand
  • aaku
    aaku about 6 years
    Yes windows will require \\ in the filenames