yolov8 / app.py
NotShrirang's picture
Update app.py
0d97354 verified
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)