Spaces:
Sleeping
Sleeping
import streamlit as st | |
from ultralytics import YOLO | |
from main_view import Main_View | |
from upload_view import Upload_View | |
from camera_view import Camera_View | |
# β Initialize session state | |
if "page" not in st.session_state: | |
st.session_state.page = "Main" # Default page | |
class App: | |
def __init__(self): | |
self.model = self.load_model() | |
self.main_view = Main_View(self) | |
self.upload_view = Upload_View(self, self.model) | |
self.camera_view = Camera_View(self, self.model) | |
def load_model(_self): | |
"""Load the YOLOv8 model (cached).""" | |
with st.spinner("Loading model... β³"): | |
model = YOLO("best.pt") | |
return model | |
def change_page(self, page_name): | |
"""Change active page.""" | |
st.session_state.page = page_name | |
st.rerun() # Force rerun Streamlit to update UI | |
def show(self): | |
"""Display only the active view.""" | |
if st.session_state.page == "Main": | |
self.main_view.show() | |
elif st.session_state.page == "Upload": | |
self.upload_view.show() | |
elif st.session_state.page == "Camera": | |
self.camera_view.show() | |
# Start the app | |
app = App() | |
app.show() |