heart / app.py
Amiruzzaman's picture
Update app.py
c932694 verified
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()