import numpy as np from tensorflow.keras.models import load_model from PIL import Image import streamlit as st import io st.set_page_config(page_title="Hurma Sınıflandırıcı", layout="centered") # Modeli yükle model = load_model('src/dates_classifier_model.h5') # Görseli işle def process_image(img): img = img.resize((224, 224)) img = np.array(img) / 255.0 img = np.expand_dims(img, axis=0) return img # Uygulama başlığı st.title('🥭 Hurma Resmi Sınıflandırma') st.write('Lütfen bir hurma fotoğrafı yükleyin. Hangi tür olduğunu tahmin edelim.') # Session State'te görüntüyü saklama if "img_bytes" not in st.session_state: st.session_state.img_bytes = None # Dosya yükleyici file = st.file_uploader("Bir Resim Seçin", type=["jpg", "jpeg", "png"]) # Dosya varsa bytes olarak sakla (çökme engellenir) if file is not None: st.session_state.img_bytes = file.read() # Görsel varsa göster ve tahmin et if st.session_state.img_bytes: try: img = Image.open(io.BytesIO(st.session_state.img_bytes)).convert("RGB") st.image(img, caption="Yüklenen Resim", use_column_width=True) processed = process_image(img) prediction = model.predict(processed) predicted_class = np.argmax(prediction) class_names = [ 'Rutab', 'Meneifi', 'Sokari', 'Galaxy', 'Shaishe', 'Medjool', 'Ajwa', 'Nabtat Ali', 'Sugaey' ] st.success(f"✅ Tahmin: **{class_names[predicted_class]}**") except: st.error("⚠️ Görsel işlenemedi. Lütfen geçerli bir .jpg veya .png dosyası yükleyin.")