|
|
import os
|
|
|
import random
|
|
|
import matplotlib.pyplot as plt
|
|
|
import numpy as np
|
|
|
import tensorflow as tf
|
|
|
from keras_preprocessing import image
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vgg16_model = tf.keras.models.load_model('../Rock_Paper_Scissors_VGG16/best_weights.hdf5')
|
|
|
img_width, img_height = 224, 224
|
|
|
|
|
|
class_labels = ['paper', 'rock', 'scissors']
|
|
|
folder_path = '../rps/test'
|
|
|
|
|
|
|
|
|
|
|
|
def selectRandomPicture(folder_path):
|
|
|
files = os.listdir(folder_path)
|
|
|
image_files = [file for file in files if file.lower().endswith(('.png', '.jpg', '.jpeg'))]
|
|
|
random_photo = random.choice(image_files)
|
|
|
return os.path.join(folder_path, random_photo)
|
|
|
|
|
|
|
|
|
|
|
|
def load_and_preprocess_image(image_path):
|
|
|
img = image.load_img(image_path, target_size=(img_width, img_height))
|
|
|
img_array = image.img_to_array(img)
|
|
|
img_array /= 255.0
|
|
|
|
|
|
return img_array
|
|
|
|
|
|
|
|
|
|
|
|
def whos_winner(first_image, second_image):
|
|
|
winner = ''
|
|
|
if first_image == second_image:
|
|
|
winner = "Tie!!"
|
|
|
|
|
|
elif (first_image == 'rock' and second_image == 'scissors' or
|
|
|
first_image == 'scissors' and second_image == 'rock'):
|
|
|
winner = "Rock wins"
|
|
|
|
|
|
elif (first_image == 'rock' and second_image == 'paper' or
|
|
|
first_image == 'paper' and second_image == 'rock'):
|
|
|
winner = "Paper wins"
|
|
|
|
|
|
elif (first_image == 'paper' and second_image == 'scissors' or
|
|
|
first_image == 'scissors' and second_image == 'paper'):
|
|
|
winner = "Scissors wins"
|
|
|
|
|
|
return winner
|
|
|
|
|
|
|
|
|
|
|
|
image1 = load_and_preprocess_image(selectRandomPicture(folder_path))
|
|
|
image2 = load_and_preprocess_image(selectRandomPicture(folder_path))
|
|
|
|
|
|
|
|
|
images = np.array([image1, image2])
|
|
|
predictions = vgg16_model.predict(images)
|
|
|
predicted_classes = np.argmax(predictions, axis=1)
|
|
|
|
|
|
firs_img = class_labels[predicted_classes[0]]
|
|
|
sec_img = class_labels[predicted_classes[1]]
|
|
|
|
|
|
|
|
|
plt.figure(figsize=(8, 5))
|
|
|
plt.subplot(1, 2, 1)
|
|
|
plt.imshow(image1)
|
|
|
plt.title(class_labels[predicted_classes[0]])
|
|
|
plt.axis('off')
|
|
|
|
|
|
plt.subplot(1, 2, 2)
|
|
|
plt.imshow(image2)
|
|
|
plt.title(class_labels[predicted_classes[1]])
|
|
|
plt.axis('off')
|
|
|
plt.tight_layout()
|
|
|
plt.suptitle(f'{whos_winner(firs_img, sec_img)}!')
|
|
|
plt.show()
|
|
|
|
|
|
print(f'The winner is:{whos_winner(firs_img, sec_img)}')
|
|
|
|