File size: 1,157 Bytes
4336de4
 
 
 
 
 
 
 
 
8bc65c5
4336de4
 
8bc65c5
4336de4
 
8bc65c5
4336de4
 
8bc65c5
4336de4
 
8bc65c5
4336de4
 
8bc65c5
4336de4
 
8bc65c5
4336de4
 
8bc65c5
 
 
4336de4
8bc65c5
4336de4
 
8bc65c5
4336de4
 
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
40
41
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()