I'm making a program that involves converting pillow (PIL) images to numpy arrays and numpy arrays back to images. However, it is converting some (but not all) images back into a grainy, grayscale version of what they were before.
The relevant part of the code is:
from PIL import Image, fromarray
from numpy import asarray
im = Image.open("C:\\path\\to\\image")
pixels = asarray(im)
Image.fromarray(pixels).show()
This code is supposed to display the same image that it originally opened. It works for some images. For example, the following image of the flag of Andorra: . However, it doesn't work for other images, such as this image of the flag of Albania:
. Instead, it becomes a grainy black and white image:
. Having looked at the numpy arrays it generates, it looks like it is generating a number rather than an RGB tuple for each pixel in the the images where this doesn't work, but I can't figure out why. How would I make it so that the flag converts back and forth correctly?