Spaces:
Running
Running
import gradio as gr | |
import cv2 | |
import numpy as np | |
from PIL import Image | |
import io | |
def convert_to_sketch(image): | |
img = np.array(image) | |
# Ubah gambar ke grayscale | |
gray_image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) | |
# Inversi warna | |
inverted_image = cv2.bitwise_not(gray_image) | |
# Terapkan gaussian blur | |
blurred = cv2.GaussianBlur(inverted_image, (21, 21), sigmaX=0, sigmaY=0) | |
# Inversi hasil blur | |
inverted_blurred = cv2.bitwise_not(blurred) | |
# Buat sketsa | |
sketch = cv2.divide(gray_image, inverted_blurred, scale=256.0) | |
# Konversi sketsa menjadi gambar PIL | |
pil_image = Image.fromarray(sketch) | |
# Menyimpan gambar dalam format JPG | |
img_byte_arr = io.BytesIO() | |
pil_image.save(img_byte_arr, format="JPEG") | |
img_byte_arr.seek(0) # Kembali ke awal stream | |
return img_byte_arr # Gradio akan menangani ini sebagai file gambar | |
# Interface | |
gr.Interface(fn=convert_to_sketch, | |
inputs="image", | |
outputs=gr.Image(type="pil"), | |
title="Konversi gambar ke sketsa", | |
description="Unggah gambar dan dapatkan versi sketsa dalam format JPG").launch() | |