Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import cv2 | |
| import numpy as np | |
| from PIL import Image | |
| st.set_page_config(layout="wide") | |
| st.title("Morphological Transformations Viewer") | |
| uploaded_file = st.file_uploader("Upload a grayscale image or Black and White Images", type=["jpg", "jpeg", "png"]) | |
| # Resize function to uniform size | |
| def resize(image, size=(300, 300)): | |
| return cv2.resize(image, size) | |
| if uploaded_file is not None: | |
| image = Image.open(uploaded_file).convert("L") | |
| img_np = np.array(image) | |
| iterations = st.slider("Iterations", 1, 10, 1) | |
| kernel = np.ones((5, 5), dtype=np.uint8) | |
| # Perform transformations | |
| dilated = cv2.dilate(img_np, kernel, iterations=iterations) | |
| eroded = cv2.erode(img_np, kernel, iterations=iterations) | |
| opened = cv2.morphologyEx(img_np, cv2.MORPH_OPEN, kernel, iterations=iterations) | |
| closed = cv2.morphologyEx(img_np, cv2.MORPH_CLOSE, kernel, iterations=iterations) | |
| gradient = cv2.morphologyEx(img_np, cv2.MORPH_GRADIENT, kernel, iterations=iterations) | |
| tophat = cv2.morphologyEx(img_np, cv2.MORPH_TOPHAT, kernel, iterations=iterations) | |
| blackhat = cv2.morphologyEx(img_np, cv2.MORPH_BLACKHAT, kernel, iterations=iterations) | |
| # Display original image | |
| st.subheader("Original Image") | |
| resized_original = cv2.resize(img_np, (300, 300)) | |
| st.image(resized_original, caption="Original Image", use_container_width=False) | |
| st.markdown("---") | |
| st.subheader("Morphological Transformations") | |
| # First row (4 images) | |
| col1, col2, col3, col4 = st.columns(4) | |
| col1.image(resize(dilated), caption="Dilation", use_container_width=False) | |
| col2.image(resize(eroded), caption="Erosion", use_container_width=False) | |
| col3.image(resize(opened), caption="Opening", use_container_width=False) | |
| col4.image(resize(closed), caption="Closing", use_container_width=False) | |
| # Second row (3 images) | |
| col5, col6, col7 = st.columns(3) | |
| col5.image(resize(gradient), caption="Gradient", use_container_width=False) | |
| col6.image(resize(tophat), caption="Top Hat", use_container_width=False) | |
| col7.image(resize(blackhat), caption="Black Hat", use_container_width=False) | |