import gradio as gr import cv2 import numpy as np from PIL import Image def image_to_sketch(image): img = np.array(image.convert("RGB")) gray = cv2.cvtColor(img, 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) return [image, Image.fromarray(sketch)] # Create Gradio interface demo = gr.Interface( fn=image_to_sketch, inputs=gr.Image(type="pil", label="Upload a portrait image"), outputs=[ gr.Image(label="Original"), gr.Image(label="Sketch"), ], title="🖌️ Image to Sketch Converter", description="Upload a portrait image and watch it turn into a pencil sketch!", examples=None ) if __name__ == "__main__": demo.launch()