I am trying to read an image from a numpy array using PIL, by doing the following:
from PIL import Image
import numpy as np
#img is a np array with shape (3,256,256)
Image.fromarray(img)
and am getting the following error:
File "...Image.py", line 2155, in fromarray
raise TypeError("Cannot handle this data type")
I think this is because fromarray
expects the shape to be (height, width, num_channels)
however the array I have is in the shape (num_channels, height, width)
as it is stored in this was in an lmdb
database.
How can I reshape the Image so that it is compatible with Image.fromarray
?
You don't need to reshape. This is what rollaxis is for:
Image.fromarray(np.rollaxis(img, 0,3))
Try
img = np.reshape(256, 256, 3)
Image.fromarray(img)
来源:https://stackoverflow.com/questions/30345937/how-to-read-image-from-numpy-array-into-pil-image