File size: 1,152 Bytes
d8a38ad
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import streamlit as st
import cv2
import numpy as np
from PIL import Image

def image_to_sketch(image):
    gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    inverted_image = 255 - gray_image
    blurred_image = cv2.GaussianBlur(inverted_image, (21, 21), 0)
    inverted_blurred = 255 - blurred_image
    sketch = cv2.divide(gray_image, inverted_blurred, scale=256.0)
    return sketch

st.title("Image to Sketch Converter")

uploaded_file = st.file_uploader("Choose an image...", type=["jpg", "jpeg", "png"])

if uploaded_file is not None:
    image = np.array(Image.open(uploaded_file))
    st.image(image, caption='Uploaded Image', use_column_width=True)
    
    st.write("")
    st.write("Converting...")

    sketch = image_to_sketch(image)
    
    st.image(sketch, caption='Sketch', use_column_width=True)

    # Provide a download link for the sketch image
    im_pil = Image.fromarray(sketch)
    im_pil.save("sketch.png")
    with open("sketch.png", "rb") as file:
        btn = st.download_button(
            label="Download Sketch",
            data=file,
            file_name="sketch.png",
            mime="image/png"
        )