import streamlit as st from PIL import Image import numpy as np import tensorflow as tf from tensorflow.keras.preprocessing import image # Function to preprocess the uploaded image def preprocess_uploaded_image(uploaded_image, target_size): img = Image.open(uploaded_image) img = img.resize(target_size) img_array = image.img_to_array(img) img_array = np.expand_dims(img_array, axis=0) return img_array # Function to load the model and make predictions def predict_image_class(model_path, uploaded_image, target_size): try: loaded_model = tf.keras.models.load_model(model_path) img = preprocess_uploaded_image(uploaded_image, target_size) prediction = loaded_model.predict(img) class_idx = np.argmax(prediction) return class_idx except Exception as e: st.error(f"Error loading the model: {e}") return None def main(): st.title("Heart Disease Image Classifier") uploaded_image = st.file_uploader("Upload an image", type=["jpg", "jpeg", "png"]) if uploaded_image is not None: st.image(uploaded_image, caption="Uploaded Image", use_column_width=True) st.write("") with st.spinner("Classifying..."): # Classify the uploaded image class_idx = predict_image_class("model.h5", uploaded_image, target_size=(224, 224)) if class_idx is not None: if class_idx == 0: st.write("The patient doesn't have heart disease") else: st.write("The patient has heart disease") else: st.error("Failed to classify the image. Please try again.") # Run the Streamlit app if __name__ == "__main__": main()