Spaces:
Runtime error
Runtime error
import streamlit as st | |
from PIL import Image | |
import numpy as np | |
import plotly.graph_objects as go | |
from models import predict | |
import cv2 | |
google_form_link = 'https://docs.google.com/forms/d/1xKeveRFf90_wCX-tjMInFC48XmFF8HOsPSQ47ruOFk0/edit' | |
# Load the pre-trained Haar Cascade for eye detection | |
eye_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_eye.xml') | |
# Function to check if the image contains an eye | |
def contains_eye(image): | |
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) | |
eyes = eye_cascade.detectMultiScale(gray_image, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30)) | |
return len(eyes) > 0 | |
# Function to load the image | |
def load_image(image_file): | |
img = Image.open(image_file) | |
return img | |
# Streamlit app title | |
st.title("Eye Cataract Detection") | |
# Streamlit header and subheader | |
st.header('Upload the image') | |
# File uploader widget | |
image_file = st.file_uploader("Upload Images", type=["png", "jpg", "jpeg"]) | |
# Check if an image file is uploaded | |
if image_file is not None: | |
img = load_image(image_file) | |
# Display the uploaded image | |
st.image(img, width=250) | |
# Convert image to OpenCV format | |
open_cv_image = np.array(img) | |
if contains_eye(open_cv_image): | |
# Button for detection | |
if st.button('Detect'): # This line adds a 'Detect' button | |
# Predict the label and probability | |
label, prob = predict(open_cv_image) | |
# Use markdown to style the text and include emojis | |
if prob > 0.5: | |
st.markdown(f"<h2 style='color: red;'>Cataract Detected π</h2>", unsafe_allow_html=True) | |
#st.markdown(f"### Probability: **{prob:.2f}**") | |
else: | |
st.markdown(f"<h2 style='color: green;'>No Cataract Detected π</h2>", unsafe_allow_html=True) | |
#st.markdown(f"### Probability: **{prob:.2f}**") | |
# Pie chart visualization | |
fig = go.Figure(data=[go.Pie(labels=['Cataract', 'No Cataract'], | |
values=[prob, 1 - prob], | |
hoverinfo='label+percent', | |
pull=[0, 0])]) | |
fig.update_layout(title_text='Cataract Detection Probability') | |
st.plotly_chart(fig) | |
st.subheader("Doctor's Verification") | |
st.markdown(f"[Click here to provide feedback on the cataract detection results]({google_form_link})", unsafe_allow_html=True) | |
else: | |
st.error("No eyes detected in the image. Please upload a relevant eye image.") | |