Lab3 / app.py
NeoLafuente's picture
+fixes
da0a632
import gradio as gr
import requests
import cv2
# URL of the API created with FastAPI
API_URL = "https://lab3-nuj8.onrender.com"
# Function to execute when clicking the "Predict button"
def predict(image):
try:
image_bgr = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
_, img_encoded = cv2.imencode(".jpg", image_bgr)
files = {"file": ("image.jpg", img_encoded.tobytes(), "image/jpeg")}
response = requests.post(f"{API_URL}/predict", files=files, timeout=120)
response.raise_for_status()
data = response.json()
return data.get("predicted_class")
except Exception as e:
return f"Error: {str(e)}"
# GUI creted using Gradio
iface = gr.Interface(
fn=predict,
inputs=gr.Image(label="Upload Image", type="numpy", height=400),
outputs=gr.Textbox(label="Predicted class"),
title="Cat/Dog predictor GUI",
description="Cat/Dog predictor GUI powered by Fastapi + Render + Docker",
)
# Launch the GUI
if __name__ == "__main__":
iface.launch()