File size: 2,013 Bytes
5cdb935
3f68dad
 
5cdb935
d1cbde3
2784973
 
 
d1cbde3
2784973
d1cbde3
2784973
d1cbde3
2784973
d1cbde3
2784973
d1cbde3
2784973
d1cbde3
2784973
 
d1cbde3
3f68dad
d1cbde3
0ab25fe
d1cbde3
 
 
ce8c8d0
67c1806
 
d1cbde3
67c1806
5cdb935
3f68dad
 
67c1806
d1cbde3
 
 
 
 
 
a8cff8d
 
d1cbde3
67c1806
a8cff8d
d1cbde3
67c1806
3f68dad
5cdb935
ce8c8d0
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
42
43
44
45
46
47
48
49
50
51
52
53
54
import gradio as gr
import cv2
import numpy as np

def apply_filter(image, filter_type, alpha, beta):
    if filter_type == "Soft Glow":
        gaussian = cv2.GaussianBlur(image, (15, 15), 0)
        soft_glow = cv2.addWeighted(image, 0.5, gaussian, 0.5, 0)
        result = soft_glow
    elif filter_type == "Portrait Enhancer":
        result = cv2.detailEnhance(image, sigma_s=10, sigma_r=0.15)
    elif filter_type == "Warm Tone":
        result = cv2.applyColorMap(image, cv2.COLORMAP_AUTUMN)
    elif filter_type == "Cold Tone":
        result = cv2.applyColorMap(image, cv2.COLORMAP_WINTER)
    elif filter_type == "High-Key":
        result = cv2.convertScaleAbs(image, alpha=1.2, beta=30)
    elif filter_type == "Low-Key":
        result = cv2.convertScaleAbs(image, alpha=0.7, beta=-30)
    elif filter_type == "Haze":
        haze = cv2.addWeighted(image, 0.7, np.full(image.shape, 255, dtype=np.uint8), 0.3, 0)
        result = haze
    else:
        result = image

    # 사용자 정의 밝기 및 대비 적용
    adjusted = cv2.convertScaleAbs(result, alpha=alpha, beta=beta)
    return adjusted

def live_preview(image, filter_type, alpha, beta):
    # 실시간으로 이미지에 필터와 밝기/대비 적용
    processed_image = apply_filter(image, filter_type, alpha, beta)
    return processed_image

# Gradio 인터페이스 정의
iface = gr.Interface(
    fn=live_preview,
    inputs=[
        "image", 
        gr.Radio(
            ["Soft Glow", "Portrait Enhancer", "Warm Tone", "Cold Tone", "High-Key", "Low-Key", "Haze"], 
            label="필터 선택"
        ),
        gr.Slider(0.5, 2.0, step=0.1, value=1.0, label="밝기 (alpha)"),
        gr.Slider(-100, 100, step=10, value=0, label="대비 (beta)")
    ],
    outputs="image",
    live=True,  # 실시간 업데이트를 활성화
    title="컬러 이미지 편집기",
    description="이미지를 업로드하고 필터를 선택한 후 밝기와 대비를 실시간으로 조절하세요."
)

iface.launch()