Kims12's picture
Update app.py
0bee58f verified
raw
history blame
No virus
3.32 kB
import gradio as gr
import cv2
import numpy as np
def apply_filter(image, filter_type, intensity):
# ๊ฐ•๋„๋ฅผ 0.0์—์„œ 1.0 ์‚ฌ์ด๋กœ ์ •๊ทœํ™”
normalized_intensity = intensity / 100.0
if filter_type == "Grayscale":
# ํ‘๋ฐฑ ๋ณ€ํ™˜
return convert_to_grayscale(image)
elif filter_type == "Soft Glow":
# Soft Glow ํšจ๊ณผ
gaussian = cv2.GaussianBlur(image, (15, 15), 0)
soft_glow = cv2.addWeighted(image, 1 - normalized_intensity, gaussian, normalized_intensity, 0)
return soft_glow
elif filter_type == "Portrait Enhancer":
# ๊ฐ„๋‹จํ•œ ํฌํŠธ๋ ˆ์ดํŠธ ํ–ฅ์ƒ (๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์กฐ์ •๋œ ๋Œ€๋น„ ๋ฐ ๋ฐ๊ธฐ)
enhanced = cv2.detailEnhance(image, sigma_s=5, sigma_r=0.1 + 0.15 * normalized_intensity)
return enhanced
elif filter_type == "Warm Tone":
# ๋”ฐ๋œปํ•œ ํ†ค ํšจ๊ณผ (๋นจ๊ฐ• ๋ฐ ๋…ธ๋ž‘ ํ†ค์„ ๊ฐ•์กฐ)
increase_red = np.array([[1.0 + 0.2 * normalized_intensity, 0.0, 0.0],
[0.0, 1.0, 0.0],
[0.0, 0.0, 1.0 - 0.2 * normalized_intensity]])
warm_image = cv2.transform(image, increase_red)
return warm_image
elif filter_type == "Cold Tone":
# ์ฐจ๊ฐ€์šด ํ†ค ํšจ๊ณผ (ํŒŒ๋ž‘ ํ†ค์„ ๊ฐ•์กฐ)
increase_blue = np.array([[1.0 - 0.2 * normalized_intensity, 0.0, 0.0],
[0.0, 1.0, 0.0],
[0.0, 0.0, 1.0 + 0.2 * normalized_intensity]])
cold_image = cv2.transform(image, increase_blue)
return cold_image
elif filter_type == "High-Key":
# High-Key ํšจ๊ณผ (๋ฐ๊ธฐ ์ฆ๊ฐ€)
high_key = cv2.convertScaleAbs(image, alpha=1.0 + 0.2 * normalized_intensity, beta=30)
return high_key
elif filter_type == "Low-Key":
# Low-Key ํšจ๊ณผ (๋ฐ๊ธฐ ๊ฐ์†Œ)
low_key = cv2.convertScaleAbs(image, alpha=1.0 - 0.3 * normalized_intensity, beta=-30)
return low_key
elif filter_type == "Haze":
# Haze ํšจ๊ณผ
haze = cv2.addWeighted(image, 1.0 - 0.3 * normalized_intensity, np.full(image.shape, 255, dtype=np.uint8), 0.3 * normalized_intensity, 0)
return haze
else:
return image
def convert_to_grayscale(image):
# ์ด๋ฏธ์ง€๋ฅผ ํ‘๋ฐฑ์œผ๋กœ ๋ณ€ํ™˜
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
return gray_image
def convert_and_save(image, filter_type, intensity):
# ์„ ํƒํ•œ ํ•„ํ„ฐ์™€ ๊ฐ•๋„๋ฅผ ์ด๋ฏธ์ง€์— ์ ์šฉ
filtered_image = apply_filter(image, filter_type, intensity)
# ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅ
output_path = "output.jpg"
cv2.imwrite(output_path, filtered_image)
return filtered_image, output_path
# Gradio ์ธํ„ฐํŽ˜์ด์Šค ์ •์˜
iface = gr.Interface(
fn=convert_and_save,
inputs=[
"image",
gr.Radio(
["Grayscale", "Soft Glow", "Portrait Enhancer", "Warm Tone", "Cold Tone", "High-Key", "Low-Key", "Haze"],
label="ํ•„ํ„ฐ ์„ ํƒ"
),
gr.Slider(minimum=1, maximum=100, default=50, label="ํ•„ํ„ฐ ๊ฐ•๋„")
],
outputs=["image", "file"],
title="์ด๋ฏธ์ง€ ํ•„ํ„ฐ ๋ฐ ํ‘๋ฐฑ ๋ณ€ํ™˜๊ธฐ",
description="์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œํ•˜๊ณ  ํ•„ํ„ฐ์™€ ๊ฐ•๋„๋ฅผ ์„ ํƒํ•˜๋ฉด, ๋ณ€ํ™˜๋œ ์ด๋ฏธ์ง€๋ฅผ JPG ํŒŒ์ผ๋กœ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."
)
iface.launch()