""" PROJECT: GaussianHighPassFilter FILENAME: app.py AUTHOR: David NAISSE DATE: August 22, 2022 DESCRIPTION: App script. """ import numpy as np import streamlit as st from PIL import Image from scipy import ndimage # Page config st.set_page_config(layout="centered") st.title("High Pass Filter for Images") st.write('High pass filter applied to images. ') left, right = st.columns([3, 2]) # Uploader img_or_video = left.file_uploader("Upload an image: ", type=['.jpg', '.png', '.jpeg']) # Display example selection size = int(right.number_input('Filter size (ex: 3x3): ', min_value=3, max_value=500, value=3, help='Filter size. ')) # Init. empty texts filter_text = right.empty() size_text = right.empty() # Default image or uploaded one original = Image.open("resource/example.jpg" if img_or_video is None else img_or_video) image = np.array(original) gray = np.array(original.convert('L')) # Apply high pass lowpass = ndimage.gaussian_filter(gray, size) gauss_highpass = gray - lowpass # Display original st.image(1-gauss_highpass, caption='High Pass') # Update elements filter_text.write(f'Using filter of size {size}x{size}. ') size_text.write(f'Image size: {gauss_highpass.shape}') # Split UI in 2 left2, right2 = st.columns([5, 5]) # Display img left2.image(image, caption='Original') right2.image(lowpass, caption='Low Pass')