import streamlit as st from utils.image_utils import load_image, detect_hand_and_food_area from utils.model import load_model, classify_food from utils.matcher import oversæt_fuzzy @st.cache_resource def load_model_cached(): return load_model() st.title("Kalorieestimering fra billede") uploaded_file = st.file_uploader("Upload et billede", type=["jpg", "jpeg", "png"]) if uploaded_file: image = load_image(uploaded_file) st.image(image, caption="Dit billede", use_column_width=True) with st.spinner("Analyserer billede..."): hand_img, food_area = detect_hand_and_food_area(image) processor, model = load_model_cached() prediction, confidence = classify_food(food_area, processor, model) if confidence < 0.7: st.warning("Modelen er ikke sikker – vælg manuelt:") prediction = st.selectbox("Vælg fødevare", ["æg", "kartoffel", "smør", "broccoli"]) else: st.success(f"Modelen gættede: {prediction} ({confidence*100:.1f}%)") gram = st.number_input(f"Hvor mange gram {prediction}?", min_value=1, max_value=1000, value=100) # Analyse st.markdown("### Analyse af måltid:") st.markdown(f"- {gram} g {prediction}") # Feedback st.markdown("### Giv feedback") feedback = st.radio("Er gættet korrekt?", ["Ja", "Nej"]) kommentar = st.text_input("Evt. kommentar") if st.button("Send feedback"): st.success("Tak for din feedback!")