Spaces:
Sleeping
Sleeping
import streamlit as st | |
import torch | |
import cv2 | |
from PIL import Image | |
import numpy as np | |
# YOLOv5 Model Loading (best.pt) | |
model = torch.hub.load('ultralytics/yolov5', 'custom', path='best.pt') # Replace 'best.pt' with your model's path | |
# Streamlit UI | |
st.title('YOLOv5 Object Detection') | |
# Input Options | |
upload_option = st.radio("Choose an input option:", ("Upload Image", "Real-Time Webcam")) | |
# Image Upload Handling | |
if upload_option == "Upload Image": | |
uploaded_file = st.file_uploader("Choose an image...", type=["jpg", "png", "jpeg"]) | |
if uploaded_file is not None: | |
image = Image.open(uploaded_file) | |
results = model(image) # Perform inference | |
st.image(results.render()[0], caption='Detected Objects', use_column_width=True) # Display results | |
# Real-Time Webcam Detection | |
if upload_option == "Real-Time Webcam": | |
run = st.checkbox('Run Webcam') | |
FRAME_WINDOW = st.image([]) # Display window for webcam frames | |
if run: | |
cap = cv2.VideoCapture(0) # Open webcam (0 for default) | |
if not cap.isOpened(): | |
st.write("Error: Unable to open webcam") | |
st.stop() | |
while run: | |
ret, frame = cap.read() # Capture frame | |
if not ret: | |
st.write("Error: Unable to capture frame") | |
break | |
# Convert to RGB and detect objects | |
frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) | |
results = model(frame_rgb) | |
annotated_frame = results.render()[0] | |
FRAME_WINDOW.image(annotated_frame) | |
cap.release() # Release webcam | |