i'm inexperienced with Python and using Tkinter for the first time to make a UI that displays results of my digit classification program with the mnist dataset. I have a question about displaying images in Tkinter when they're from a numpy array rather than a filepath on my PC. The current code I have tried for this is:
img = PhotoImage(test_images[0])
window.create_image(20,20, image=img)
Which was unsuccessful, however i'm not sure how else to approach it. Below is a picture of the image plotted from the array that I would like to display in the UI, and below the image is just the code that shows how i'm loading and plotting the images in case that helps. Sorry if this is an easy fix that i'm missing, i'm very new to this. Cheers
https://i.gyazo.com/8962f16b4562c0c15c4ff79108656087.png
# Load the data set
train_images = mnist.train_images() #training data
train_labels = mnist.train_labels() #training labels
test_images = mnist.test_images() # training training images
test_labels = mnist.test_labels()# training data labels
# normalise the pixel values of the images to make the network easier to train
train_images = (train_images/255) - 0.5
test_images = (test_images/255) - 0.5
# Flatten the images in to a 784 dimensional vector to pass into the neural network
train_images = train_images.reshape((-1, 784))
test_images = test_images.reshape((-1, 784))
# Print shape of images
print(train_images.shape) # 60,000 rows and 784 columns
print(test_images.shape)
for i in range(0,15):
first_image = test_images[i]
first_image = np.array(first_image, dtype='float')
pixels = first_image.reshape((28,28))
plt.imshow(pixels)
plt.show()
Error Message:
Traceback (most recent call last):
File "C:/Users/Ben/Desktop/Python Projects/newdigitclassifier/classifier.py", line 122, in <module>
img = PhotoImage(test_images[0])
File "C:\Users\Ben\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py", line 3545, in __init__
Image.__init__(self, 'photo', name, cnf, master, **kw)
File "C:\Users\Ben\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py", line 3491, in __init__
if not name:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Image.fromarray(...)function fromPillowmodule to convert the array to image.