How to load pixels of multiple images in a directory in a numpy array . I have loaded a single image in a numpy array . But can not figure out how to load multiple images from a directory . Here what i have done so far
image = Image.open('bn4.bmp') nparray=np.array(image)
This loads a 32*32 matrices . I want to load 100 of the images in a numpy array . I want to make 100*32*32 size numpy array . How can i do that ? I know that the structure would look something like this
for filename in listdir("BengaliBMPConvert"): if filename.endswith(".bmp"): ----------------- else: continue
But can not find out how to load the images in numpy array
Images are an easier way to represent the working model. In Machine Learning, Python uses the image data in the format of Height, Width, Channel format. i.e. Images are converted into Numpy Array in Height, Width, Channel format.
To get a list of BMP files from the directory BengaliBMPConvert
, use:
import glob filelist = glob.glob('BengaliBMPConvert/*.bmp')
On the other hand, if you know the file names already, just put them in a sequence:
filelist = 'file1.bmp', 'file2.bmp', 'file3.bmp'
To combine all the images into one array:
x = np.array([np.array(Image.open(fname)) for fname in filelist])
To save a numpy array to file using pickle:
import pickle pickle.dump( x, filehandle, protocol=2 )
where x
is the numpy array to be save, filehandle
is the handle for the pickle file, such as open('filename.p', 'wb')
, and protocol=2
tells pickle to use its current format rather than some ancient out-of-date format.
Alternatively, numpy arrays can be pickled using methods supplied by numpy (hat tip: tegan). To dump array x
in file file.npy
, use:
x.dump('file.npy')
To load array x
back in from file:
x = np.load('file.npy')
For more information, see the numpy docs for dump and load.
Use OpenCV's imread() function together with os.listdir(), like
import numpy as np import cv2 import os instances = [] # Load in the images for filepath in os.listdir('images/'): instances.append(cv2.imread('images/{0}'.format(filepath),0)) print(type(instances[0]))
class 'numpy.ndarray'
This returns you a list (==instances
) in which all the greyscale values of the images are stored. For colour images simply set .format(filepath),1
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With