"""This is a demo for running the egg segmentation and sizing using streamlit library""" from dataclasses import dataclass, field from pathlib import Path import tempfile import streamlit as st import pandas as pd from PIL import Image from src.deep_package_detection.detector import PackageDetectorInference @dataclass class DemoPackageDetection: """Class for running the egg segmentation and sizing app using Streamlit.""" image: str = field(init=False) def upload_image(self) -> None: """Upload an image from the streamlit page""" uploaded_file = st.file_uploader( "Upload an image or use the default one...", type=["jpg", "png", "jpeg"] ) if uploaded_file is not None: with tempfile.NamedTemporaryFile(delete=False, suffix=".jpg") as tmp_file: tmp_file.write(uploaded_file.getbuffer()) self.image = tmp_file.name else: self.image = "tests/test_data/5.jpg" st.image( Image.open(self.image), caption="Original/Uploaded Image", width="stretch", ) def process_image(self) -> None: """Process the image for the egg segmentation and sizing""" if st.button("Detect/Count Packages"): inferer = PackageDetectorInference( model_path=Path( "./src/deep_package_detection/model/package_detection.pt" ), ) segmentations = inferer.inference(data_path=self.image) result_image = inferer.single_inference(segmentations) if result_image is None: return st.markdown("