import streamlit as st import cv2 import numpy as np from PIL import Image st.title('Image to Sketch') file = st.file_uploader('Upload a portrait Image', type=['jpg', 'png', 'jpeg']) if file: img = Image.open(file).convert('RGB') img2 = np.array(img) img_bw = cv2.cvtColor(img2, cv2.COLOR_RGB2BGR) gray = cv2.cvtColor(img_bw, cv2.COLOR_RGB2GRAY) inverted = 255 - gray blurred = cv2.GaussianBlur(inverted, (21, 21), 0) def dodge(front, back): return cv2.divide(front, 255 - back, scale=255) sketch = dodge(gray, blurred) st.subheader('Original vs Sketch') col1, col2 = st.columns(2) with col1: st.image(img, caption='Original', use_container_width=True) with col2: st.image(sketch, caption='Sketch', use_container_width=True)