Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -5,7 +5,8 @@ import cv2
|
|
| 5 |
from huggingface_hub import hf_hub_download
|
| 6 |
from tensorflow.keras.models import load_model
|
| 7 |
from io import BytesIO
|
| 8 |
-
from PIL import Image
|
|
|
|
| 9 |
|
| 10 |
# Authenticate and download model from Hugging Face
|
| 11 |
repo_id = "Hammad712/closed_eye_detection"
|
|
@@ -65,16 +66,27 @@ st.set_page_config(layout="wide")
|
|
| 65 |
st.markdown(f"<style>{combined_css}</style>", unsafe_allow_html=True)
|
| 66 |
|
| 67 |
st.markdown('<div class="title"><span class="colorful-text">Eye</span> <span class="black-white-text">Detection Model</span></div>', unsafe_allow_html=True)
|
| 68 |
-
st.markdown('<div class="custom-text">Upload an image to predict whether the eyes are open or closed.</div>', unsafe_allow_html=True)
|
| 69 |
|
| 70 |
# Input for image URL or path
|
| 71 |
with st.expander("Input Options", expanded=True):
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 78 |
|
| 79 |
# Resize and preprocess the image
|
| 80 |
resized_image = cv2.resize(image, (img_height, img_width))
|
|
@@ -90,7 +102,7 @@ if uploaded_file is not None:
|
|
| 90 |
label = get_label(prediction)
|
| 91 |
|
| 92 |
# Display the image and prediction
|
| 93 |
-
st.image(image, channels="BGR", caption='Uploaded Image')
|
| 94 |
st.markdown(f"### Prediction: {prediction:.2f}, Label: {label}")
|
| 95 |
|
| 96 |
# Provide a download button for the uploaded image (optional)
|
|
@@ -102,6 +114,6 @@ if uploaded_file is not None:
|
|
| 102 |
st.download_button(
|
| 103 |
label="Download Image",
|
| 104 |
data=img_byte_arr,
|
| 105 |
-
file_name="
|
| 106 |
mime="image/jpeg"
|
| 107 |
)
|
|
|
|
| 5 |
from huggingface_hub import hf_hub_download
|
| 6 |
from tensorflow.keras.models import load_model
|
| 7 |
from io import BytesIO
|
| 8 |
+
from PIL import Image
|
| 9 |
+
import requests
|
| 10 |
|
| 11 |
# Authenticate and download model from Hugging Face
|
| 12 |
repo_id = "Hammad712/closed_eye_detection"
|
|
|
|
| 66 |
st.markdown(f"<style>{combined_css}</style>", unsafe_allow_html=True)
|
| 67 |
|
| 68 |
st.markdown('<div class="title"><span class="colorful-text">Eye</span> <span class="black-white-text">Detection Model</span></div>', unsafe_allow_html=True)
|
| 69 |
+
st.markdown('<div class="custom-text">Upload an image or provide a URL to predict whether the eyes are open or closed.</div>', unsafe_allow_html=True)
|
| 70 |
|
| 71 |
# Input for image URL or path
|
| 72 |
with st.expander("Input Options", expanded=True):
|
| 73 |
+
url = st.text_input("Enter image URL", "")
|
| 74 |
+
uploaded_file = st.file_uploader("Or upload an image", type=["jpg", "jpeg", "png"])
|
| 75 |
+
|
| 76 |
+
def load_image_from_url(url):
|
| 77 |
+
response = requests.get(url)
|
| 78 |
+
img = Image.open(BytesIO(response.content)).convert('RGB')
|
| 79 |
+
return np.array(img)
|
| 80 |
+
|
| 81 |
+
if uploaded_file is not None or url:
|
| 82 |
+
if uploaded_file is not None:
|
| 83 |
+
# Read the uploaded image
|
| 84 |
+
file_bytes = np.asarray(bytearray(uploaded_file.read()), dtype=np.uint8)
|
| 85 |
+
image = cv2.imdecode(file_bytes, 1)
|
| 86 |
+
elif url:
|
| 87 |
+
# Read the image from URL
|
| 88 |
+
image = load_image_from_url(url)
|
| 89 |
+
image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
|
| 90 |
|
| 91 |
# Resize and preprocess the image
|
| 92 |
resized_image = cv2.resize(image, (img_height, img_width))
|
|
|
|
| 102 |
label = get_label(prediction)
|
| 103 |
|
| 104 |
# Display the image and prediction
|
| 105 |
+
st.image(image, channels="BGR", caption='Uploaded Image' if uploaded_file is not None else 'Image from URL')
|
| 106 |
st.markdown(f"### Prediction: {prediction:.2f}, Label: {label}")
|
| 107 |
|
| 108 |
# Provide a download button for the uploaded image (optional)
|
|
|
|
| 114 |
st.download_button(
|
| 115 |
label="Download Image",
|
| 116 |
data=img_byte_arr,
|
| 117 |
+
file_name="processed_image.jpg",
|
| 118 |
mime="image/jpeg"
|
| 119 |
)
|