from pathlib import Path | |
from PIL import Image | |
import pathlib | |
import numpy as np | |
import torch | |
import streamlit as st | |
import cv2 | |
#If you have linux (or deploying for linux) use: | |
pathlib.WindowsPath = pathlib.PosixPath | |
# Load YOLOv5 model | |
model = torch.hub.load('./yolov5', 'custom', path='./yolo/best.pt', source='local', force_reload=True) | |
st.title("YOLO Object Detection Web App") | |
# Upload image | |
uploaded_file = st.file_uploader("Choose an image...", type=["jpg", "jpeg", "png"]) | |
if uploaded_file is not None: | |
# Convert the file to an OpenCV image | |
image = Image.open(uploaded_file) | |
st.image(image, caption="Uploaded Image", use_column_width=True) | |
st.write("Processing...") | |
# Convert the image to a format compatible with YOLO | |
image_np = np.array(image) | |
image_cv = cv2.cvtColor(image_np, cv2.COLOR_RGB2BGR) | |
# Perform YOLO detection | |
results = model(image_cv) | |
# Render the results | |
detected_image = np.squeeze(results.render()) | |
# Display result | |
st.image(detected_image, caption="Detected Image", use_column_width=True) |