Slender
PUSH
f822f5e
import streamlit as st # for creating webapp
import cv2 # image processing
from PIL import Image, ImageEnhance
import numpy as np # to deal with arrays
def cartoonize_image(our_image):
new_img = np.array(our_image.convert('RGB'))
# mask
gray = cv2.cvtColor(new_img, cv2.COLOR_BGR2GRAY)
gray = cv2.medianBlur(gray, 5)
edges = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 9, 9)
color = cv2.bilateralFilter(new_img, 9, 300, 300)
cartoon = cv2.bitwise_and(color, color, mask=edges)
return cartoon
def cannize_image(our_image):
new_img = np.array(our_image.convert('RGB'))
img = cv2.GaussianBlur(new_img, (9, 9), 0)
canny = cv2.Canny(img, 100, 150)
return canny
def main():
st.title('Image Editing App')
st.text('Edit your images in a fast and simple way')
activities = ['Detection', 'About']
choice = st.sidebar.selectbox('Select Activity', activities)
if choice == 'Detection':
st.subheader('Face Detection')
image_file = st.file_uploader('Upload Image', type=['jpg', 'jpeg', 'png'])
if image_file is not None:
our_image = Image.open(image_file)
st.text('Original Image')
enhance_type = st.sidebar.radio('Enhance type', \
options=['Gray-scale', 'Contrast', 'Brightness', 'Blurring', 'Sharpness'])
st.sidebar.image(our_image)
if enhance_type == 'Gray-scale':
# convert image to RGB arrays
img = np.array(our_image.convert('RGB'))
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
st.image(gray)
elif enhance_type == 'Contrast':
rate = st.sidebar.slider('Contrast', 0.5, 6.0, 2.5)
enhancer = ImageEnhance.Contrast(our_image)
enhanced_img = enhancer.enhance(rate)
st.image(enhanced_img)
elif enhance_type == 'Brightness':
rate = st.sidebar.slider('Brightness', 0.5, 6.0, 1.5)
enhancer = ImageEnhance.Brightness(our_image)
enhanced_img = enhancer.enhance(rate)
st.image(enhanced_img)
elif enhance_type == 'Blurring':
rate = st.sidebar.slider('Blurring', 0.5, 6.0, 1.5)
blurred_img = cv2.GaussianBlur(np.array(our_image), (15, 15), rate)
st.image(blurred_img)
elif enhance_type == 'Sharpness':
rate = st.sidebar.slider('Sharpness', 0.5, 6.0, 1.5)
enhancer = ImageEnhance.Sharpness(our_image)
enhanced_img = enhancer.enhance(rate)
st.image(enhanced_img)
else:
st.image(our_image)
tasks = ['Cartoonize', 'Cannize']
feature_choice = st.sidebar.selectbox('Find features', tasks)
if st.sidebar.button('Process'):
if feature_choice == 'Cartoonize':
result_img = cartoonize_image(our_image)
st.image(result_img)
if feature_choice == 'Cannize':
result_img = cannize_image(our_image)
st.image(result_img)
if choice == 'About':
st.subheader('About the developer')
st.markdown('Built with streamlit by [Slender](https://huggingface.co/Slender)')
st.text('My name is Slender, I am computer science student with an experience of 3 years in python programming.')
if __name__ == '__main__':
main()