import os

import gradio as gr
import PIL.Image as Image

from ultralytics import ASSETS, YOLO

model = None


def predict_image(img, conf_threshold, iou_threshold, model_name):
    """Predicts objects in an image using a YOLOv8 model with adjustable confidence and IOU thresholds."""
    os.chdir('/home/user/app/model')
    os.system(f'/home/user/app/model/darknet detect /home/user/app/model/cfg/yolov2.cfg /home/user/app/model/yolov2.weights /home/user/app/model/data/dog.jpg')

    return '/home/user/app/model/predictions.jpg'


iface = gr.Interface(
    fn=predict_image,
    inputs=[
        gr.Image(type="filepath", label="Upload Image"),
        gr.Slider(minimum=0, maximum=1, value=0.25, label="Confidence threshold"),
        gr.Slider(minimum=0, maximum=1, value=0.45, label="IoU threshold"),
        gr.Radio(choices=["yolo11n", "yolo11s", "yolo11n-seg", "yolo11s-seg", "yolo11n-pose", "yolo11s-pose"], label="Model Name", value="yolo11n"),
    ],
    outputs=gr.Image(type="filepath", label="Result"),
    title="Ultralytics Gradio Application 🚀",
    description="Upload images for inference. The Ultralytics YOLO11n model is used by default.",
)

iface.launch()