Spaces:
Sleeping
Sleeping
import streamlit as st | |
from ultralytics import YOLO | |
from PIL import Image | |
import json | |
import cv2 | |
import numpy as np | |
model = YOLO("./models/best.pt") | |
classNames = ["license-plate", "vehicle"] | |
st.title("Number Plate and Vehicle Detection using YOLOv8") | |
st.write("This is a web app to detect number plates and vehicles in images using YOLOv8.") | |
image = st.file_uploader("Upload an image", type=["jpg", "jpeg", "png"]) | |
if image is not None: | |
st.header("Original Image:") | |
st.image(image, caption="Uploaded Image", use_column_width=True) | |
st.info("Detecting...") | |
img = Image.open(image) | |
results = model.predict(img, conf=0.5) | |
json_results = results[0].tojson() | |
encoded_json_results = str(json_results).replace("\n", '').replace(" ", '') | |
encoded_json_results = json.loads(encoded_json_results) | |
for pred in encoded_json_results: | |
x1 = int(pred['box']['x1']) | |
y1 = int(pred['box']['y1']) | |
x2 = int(pred['box']['x2']) | |
y2 = int(pred['box']['y2']) | |
img = np.array(img) | |
img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR) | |
cv2.rectangle(img, (x1, y1), (x2, y2), (0, 0, 255), 2) | |
cv2.putText(img, pred['name'], (x1, y1), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2) | |
st.header("Detected Image") | |
st.image(img, caption="Detected Image", use_column_width=True) | |
st.header("JSON Results") | |
st.write(encoded_json_results) | |