Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to load multiple images in a numpy array ?

Tags:

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

like image 367
Md Shopon Avatar asked Aug 28 '16 19:08

Md Shopon


People also ask

Can NumPy array store images?

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.


2 Answers

Getting a list of BMP files

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' 

Combining all the images into one numpy array

To combine all the images into one array:

x = np.array([np.array(Image.open(fname)) for fname in filelist]) 

Pickling a numpy array

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.

like image 76
John1024 Avatar answered Oct 20 '22 01:10

John1024


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.

like image 33
2Obe Avatar answered Oct 19 '22 23:10

2Obe