| 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") |
|
|
| |
| model = load_model('src/dates_classifier_model.h5') |
|
|
| |
| def process_image(img): |
| img = img.resize((224, 224)) |
| img = np.array(img) / 255.0 |
| img = np.expand_dims(img, axis=0) |
| return img |
|
|
| |
| 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.') |
|
|
| |
| if "img_bytes" not in st.session_state: |
| st.session_state.img_bytes = None |
|
|
| |
| file = st.file_uploader("Bir Resim Seçin", type=["jpg", "jpeg", "png"]) |
|
|
| |
| if file is not None: |
| st.session_state.img_bytes = file.read() |
|
|
| |
| 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.") |
|
|