Spaces:
Running
Running
import cv2 | |
from PIL import Image | |
import numpy as np | |
import gradio as gr | |
# Convert image to sketch function | |
def convert_to_sketch(img, blur_strength): | |
img = np.array(img) # Convert PIL Image to numpy array | |
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) | |
img_inverted = cv2.bitwise_not(img_gray) | |
img_blur = cv2.GaussianBlur(img_inverted, (blur_strength, blur_strength), sigmaX=0, sigmaY=0) | |
img_blend = cv2.divide(img_gray, 255 - img_blur, scale=256) | |
white_background = 255 * np.ones_like(img_blend) | |
sketch_with_bg = cv2.addWeighted(img_blend, 1, white_background, 1, 0) | |
return sketch_with_bg | |
# Gradio interface function | |
def sketch_interface(image, blur_strength): | |
sketch = convert_to_sketch(image, blur_strength) | |
return Image.fromarray(sketch) | |
# Create Gradio interface | |
interface = gr.Interface( | |
fn=sketch_interface, | |
inputs=[gr.Image(type="pil"), gr.Slider(1, 51, step=2, label="Blur Strength", value=21)], | |
outputs=gr.Image(type="pil"), | |
title="Cartoon to Sketch Converter", | |
description="Upload an image to convert it into a sketch, and adjust the blur strength for different effects." | |
) | |
# Launch the Gradio app | |
interface.launch() |