1_1_mono_img-3 / app.py
Kims12's picture
Update app.py
2b53407 verified
import gradio as gr
from gradio_imageslider import ImageSlider
import cv2
import numpy as np
def convert_to_grayscale(image):
"""
์ด๋ฏธ์ง€๋ฅผ ํ‘๋ฐฑ์œผ๋กœ ๋ณ€ํ™˜.
Gradio๋Š” RGB ํ˜•์‹์˜ ์ด๋ฏธ์ง€๋ฅผ ์ œ๊ณตํ•˜๋ฏ€๋กœ, OpenCV์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด BGR๋กœ ๋ณ€ํ™˜ ํ›„ ๊ทธ๋ ˆ์ด์Šค์ผ€์ผ๋กœ ๋ณ€ํ™˜.
"""
# RGB๋ฅผ BGR๋กœ ๋ณ€ํ™˜
bgr_image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
# BGR์„ ๊ทธ๋ ˆ์ด์Šค์ผ€์ผ๋กœ ๋ณ€ํ™˜
gray_image = cv2.cvtColor(bgr_image, cv2.COLOR_BGR2GRAY)
return gray_image
def convert_and_save(image):
"""
์ด๋ฏธ์ง€๋ฅผ ํ‘๋ฐฑ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , ๋‹ค์šด๋กœ๋“œ ๊ฐ€๋Šฅํ•œ PNG ํŒŒ์ผ๋กœ ์ €์žฅ.
๋ณ€๊ฒฝ ์ „ ์ด๋ฏธ์ง€๋Š” ์›๋ณธ, ๋ณ€๊ฒฝ ํ›„ ์ด๋ฏธ์ง€๋Š” ํ‘๋ฐฑ ์ด๋ฏธ์ง€๋กœ ์Šฌ๋ผ์ด๋“œ์— ํ‘œ์‹œ.
"""
# ํ‘๋ฐฑ ์ด๋ฏธ์ง€ ๋ณ€ํ™˜
gray_image = convert_to_grayscale(image)
# ํ‘๋ฐฑ ์ด๋ฏธ์ง€๋ฅผ PNG๋กœ ์ €์žฅ
output_path = "output.png"
cv2.imwrite(output_path, gray_image)
# ์›๋ณธ ์ด๋ฏธ์ง€๋Š” ์ด๋ฏธ RGB ํ˜•์‹
original_rgb = image.copy()
# ํ‘๋ฐฑ ์ด๋ฏธ์ง€๋ฅผ RGB ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ (์Šฌ๋ผ์ด๋“œ ํ˜ธํ™˜์„ ์œ„ํ•ด)
gray_rgb = cv2.cvtColor(gray_image, cv2.COLOR_GRAY2RGB)
# ๋ณ€๊ฒฝ ์ „ํ›„ ์ด๋ฏธ์ง€๋ฅผ ์Šฌ๋ผ์ด๋“œ๋กœ ๋ฐ˜ํ™˜ (๋ณ€๊ฒฝ ์ „: ์›๋ณธ, ๋ณ€๊ฒฝ ํ›„: ํ‘๋ฐฑ)
return [original_rgb, gray_rgb], output_path
# ์Šฌ๋ผ์ด๋” ์„ค์ •
slider = ImageSlider(label="๋ณ€ํ™˜ ์ „ํ›„ ์ด๋ฏธ์ง€")
# Gradio ์ธํ„ฐํŽ˜์ด์Šค ์ •์˜
iface = gr.Interface(
fn=convert_and_save,
inputs="image",
outputs=[slider, "file"],
examples=["1.png", "2.jpg", "3.png"], # ์ƒ˜ํ”Œ ์ด๋ฏธ์ง€ ์ถ”๊ฐ€
title="์ด๋ฏธ์ง€ ํ‘๋ฐฑ ๋ณ€ํ™˜๊ธฐ",
description="์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œํ•˜๋ฉด ์›๋ณธ๊ณผ ํ‘๋ฐฑ์œผ๋กœ ๋ณ€ํ™˜๋œ ์ด๋ฏธ์ง€๋ฅผ ์Šฌ๋ผ์ด๋“œ๋กœ ๋น„๊ตํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ‘๋ฐฑ ์ด๋ฏธ์ง€๋ฅผ PNG ํŒŒ์ผ์œผ๋กœ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."
)
if __name__ == "__main__":
iface.launch()