Spaces:
Sleeping
Sleeping
import tensorflow as tf | |
import numpy as np | |
import cv2 | |
import random | |
import gradio as gr | |
classes = ['paper', 'rock', 'scissors'] | |
model = tf.keras.models.load_model('rps.h5') | |
ch = {} | |
# sel = None | |
# det = None | |
def classify_image(inp): | |
img = cv2.resize(inp,(224,224),interpolation=cv2.INTER_AREA) | |
img = np.reshape(img,(1,224,224,3)) | |
pred = model.predict(img).flatten() | |
confidences = {classes[i]: float(pred[i]) for i in range(3)} | |
det = classes[pred.argmax(axis=-1)] | |
print(det) | |
ch['det'] = det | |
return confidences | |
def random_char(n): | |
print("HELLO") | |
n = random.randint(0,2) | |
sel = classes[n] | |
print(sel) | |
ch['sel'] = sel | |
return classes[n].upper() | |
def result(t): | |
print("HIOAL") | |
sel = ch['sel'] | |
det = ch['det'] | |
print(sel, det) | |
if (sel == 'rock' and det == 'paper') or (sel == 'paper' and det == 'scissors') or (sel == "scissors" and det == "rock"): | |
return "YOU WON" | |
elif (sel == 'paper' and det == 'rock') or (sel == 'scissors' and det == 'paper') or (sel == "rock" and det == "scissors"): | |
return "YOU LOST" | |
else: | |
return "IT'S A TIE" | |
import gradio as gr | |
webcam = gr.inputs.Image(shape=(224, 224), source="webcam") | |
classify = gr.Interface(fn=classify_image, | |
inputs=webcam, | |
outputs=gr.Label(num_top_classes=3)) | |
computer = gr.Interface(fn=random_char, | |
inputs=None, | |
outputs=gr.TextArea(max_lines=1,label='The computer selected:')) | |
final = gr.Interface(fn=result, | |
inputs=None, | |
outputs=gr.TextArea(max_lines=1,label='Result')) | |
final = gr.Parallel(classify, computer, final).launch(debug=True) |