Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -1,54 +1,426 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
import gradio as gr
|
| 2 |
-
import
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
soft_glow = cv2.addWeighted(image, 1.5, blur, -0.5, 0)
|
| 11 |
-
result = soft_glow
|
| 12 |
-
elif filter_type == "Portrait Enhancer":
|
| 13 |
-
lab = cv2.cvtColor(image, cv2.COLOR_BGR2LAB)
|
| 14 |
-
l, a, b = cv2.split(lab)
|
| 15 |
-
l = cv2.equalizeHist(l)
|
| 16 |
-
enhanced = cv2.merge([l, a, b])
|
| 17 |
-
result = cv2.cvtColor(enhanced, cv2.COLOR_LAB2BGR)
|
| 18 |
-
elif filter_type == "Warm Tone":
|
| 19 |
-
warm_tone = cv2.addWeighted(image, 0.5, np.full(image.shape, (10, 20, 30), dtype=np.uint8), 0.5, 0)
|
| 20 |
-
result = warm_tone
|
| 21 |
-
elif filter_type == "Cold Tone":
|
| 22 |
-
cold_tone = cv2.addWeighted(image, 0.5, np.full(image.shape, (-10, -20, 30), dtype=np.uint8), 0.5, 0)
|
| 23 |
-
result = cold_tone
|
| 24 |
-
elif filter_type == "High-Key":
|
| 25 |
-
high_key = cv2.convertScaleAbs(image, alpha=1.2, beta=30)
|
| 26 |
-
result = high_key
|
| 27 |
-
elif filter_type == "Low-Key":
|
| 28 |
-
low_key = cv2.convertScaleAbs(image, alpha=0.7, beta=-30)
|
| 29 |
-
result = low_key
|
| 30 |
-
elif filter_type == "Haze":
|
| 31 |
-
haze = cv2.addWeighted(image, 0.7, np.full(image.shape, (50, 50, 50), dtype=np.uint8), 0.3, 0)
|
| 32 |
-
result = haze
|
| 33 |
-
elif filter_type == "Monochrome":
|
| 34 |
-
result = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
|
| 35 |
-
else:
|
| 36 |
-
result = image
|
| 37 |
-
|
| 38 |
-
temp_file = tempfile.NamedTemporaryFile(delete=False, suffix=".jpg")
|
| 39 |
-
cv2.imwrite(temp_file.name, result)
|
| 40 |
-
return result, temp_file.name
|
| 41 |
-
|
| 42 |
-
# Gradio μΈν°νμ΄μ€ μμ±
|
| 43 |
iface = gr.Interface(
|
| 44 |
-
fn=
|
| 45 |
-
inputs=
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
|
|
|
| 50 |
)
|
| 51 |
|
| 52 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 53 |
if __name__ == "__main__":
|
| 54 |
iface.launch()
|
|
|
|
| 1 |
+
λ€λ€~
|
| 2 |
+
γ
γ
γ
λΉ λ³κ²½νμ΄μ...
|
| 3 |
+
μλ
νμΈμ
|
| 4 |
+
κ·Όλ° μλ¦¬κ° μ’ λ μ»ΈμΌλ©΄ μ’κ² μ΄μ
|
| 5 |
+
μλ
νμΈμ
|
| 6 |
+
λ€ μ’ λ ν€μμ€ λ³΄μκ² μ΄μ?
|
| 7 |
+
μκΉλ³΄λ€ λμμ
|
| 8 |
+
μλ€λ¦½λλ€.
|
| 9 |
+
μ λ€ μ§κΈ μ’μμ
|
| 10 |
+
μ£μ‘νλ° μ±μ§νΌν° μ λ£ κ²°μ λ μ΄λμ ν΄μ?? μ§κΈ λ§μμ΄ κΈν΄μ리 γ
γ
|
| 11 |
+
μ κ°μ κ²½μ°λ μ λ°κ°κΈ°λ μ’ μ΄λ €μ μ΅λλ€.
|
| 12 |
+
μ λμ...
|
| 13 |
+
μ΄
|
| 14 |
+
μ λμ
|
| 15 |
+
μμλ€λ Έμ΄μ
|
| 16 |
+
UIκ° μ΅μνμ§ μμμ μ°Ύλλ° μκ°μ΄ μ’ κ±Έλ Έμ΅λλ€.
|
| 17 |
+
λ€λ€ γ
γ
|
| 18 |
+
UIκ° μ ννκ² λκ°μ?? γ
γ
γ
|
| 19 |
+
μ μ μΈν°νμ΄μ€μ
|
| 20 |
+
μ μ λ£κ²°μ λ΄μΌ ν΄λ λ κΉμ?
|
| 21 |
+
μ§κΈ μ΄κ±° νλ€λ³΄λ©΄ γ
γ
κ°μλ₯Ό λμΉ κ² κ°μμ
|
| 22 |
+
κΈ°λλμ. ...λκ·Όλκ·Ό..λλμ΄ κ°μ.
|
| 23 |
+
λ΅. ν둬ννΈ....!!!
|
| 24 |
+
λλ€μ μ±ν¨μΌλ‘ λ³κ²½ν΄μ£ΌμΈμ~
|
| 25 |
+
μνλ¦°μ
λλ€
|
| 26 |
+
μλ
νμΈμ μ£κΈ λ¦μλ€μ
|
| 27 |
+
μ±μ§νΌν° μ λ£ κ²°μ μλ£μ
|
| 28 |
+
νκΉ
νμ΄μ€ μ λ£λ μ΄λμ κ²°μ ν΄μ?
|
| 29 |
+
proλ‘ νμλ©΄ λ©λλ€
|
| 30 |
+
μ.....!!! κΈ°λν λμ.
|
| 31 |
+
μΌμΌ~~~ 2κ°μ§ λͺ¨λ μ λ£ κ²°μ μλ£μ
|
| 32 |
+
κΉλν μ΄μ¬λ κ°μ¬ν©λλ€.
|
| 33 |
+
λλΆμ λΉ λ₯΄κ² μ λ£κ²°μ νμ΄μ
|
| 34 |
+
λ€νμ
λλ€~
|
| 35 |
+
λ€
|
| 36 |
+
λ΅ λ³΄μ¬μ
|
| 37 |
+
λ€~
|
| 38 |
+
λ€
|
| 39 |
+
λ€
|
| 40 |
+
1
|
| 41 |
+
1
|
| 42 |
+
1
|
| 43 |
+
1
|
| 44 |
+
1
|
| 45 |
+
1
|
| 46 |
+
1
|
| 47 |
+
1
|
| 48 |
+
1
|
| 49 |
+
μΌλ¨ μ±μ§νΌν°λ§ μ λ£κ²°μ μ
|
| 50 |
+
1
|
| 51 |
+
gptλ§ κ°μ
νμ΄μ
|
| 52 |
+
λ€
|
| 53 |
+
1
|
| 54 |
+
λ€
|
| 55 |
+
2
|
| 56 |
+
2
|
| 57 |
+
2
|
| 58 |
+
2
|
| 59 |
+
2
|
| 60 |
+
1
|
| 61 |
+
1
|
| 62 |
+
1
|
| 63 |
+
1
|
| 64 |
+
λ€~
|
| 65 |
+
1
|
| 66 |
+
μ§κΈ νμ κ°μ
νλκ±°μ£ ?
|
| 67 |
+
μ...μ½λ‘λλ νμΈν΄λ³΄μΈμ. μμ¦ μ¬ν΄μ‘λ€λλ°...
|
| 68 |
+
λ€
|
| 69 |
+
λ΅.
|
| 70 |
+
λ€
|
| 71 |
+
λΉ
|
| 72 |
+
μ μ?
|
| 73 |
+
μ~ μκΉ κ°μ
νλ€κ³ μ¬λ Έλλ°...γ
γ
μ κΈ°λ€λ €μ£Όμ κ±°μμ?
|
| 74 |
+
λ΅~
|
| 75 |
+
λ€
|
| 76 |
+
λ€
|
| 77 |
+
μ μλ§μ
|
| 78 |
+
γ
γ
|
| 79 |
+
μ μμ§ λͺ»λ€μ΄κ°μ΄μ
|
| 80 |
+
μμ΄μ½ λλ¬μ μ΄λλ‘ λ€μ΄κ°μ£ ?γ
|
| 81 |
+
νλ‘νλλ₯΄μλ©΄λ©λλ€
|
| 82 |
+
Create a new Space
|
| 83 |
+
γ
γ
|
| 84 |
+
κ·Έλ₯ μΌλ¨ νλ² λ³΄μ¬μ£Όμ¬ μλ κΉμ γ
γ
|
| 85 |
+
μ΄κ±° λ€ κΈ°λ€λ¦¬λ€κ° μ§λκ° μλκ°κ² κ°μλμ
|
| 86 |
+
λ€
|
| 87 |
+
μ λμ λ¦μ΄μ§λ©΄ μλ κ±°κ°μμ
|
| 88 |
+
리콰μ΄μ΄λ¨ΌνΈλ νλ©΄μ μ΄λμλμ?
|
| 89 |
+
μ§κΈ κ·Ένλ©΄μ΄ μλμμ
|
| 90 |
+
λ²νΌ νκ°μ© λλ₯΄κ³ λ¨κ³μ μΌλ‘ λ°λΌκ°μΌ ν κ² κ°μμ
|
| 91 |
+
requirements.txt
|
| 92 |
+
μλμ
|
| 93 |
+
μλ¨γ
|
| 94 |
+
μλμ
|
| 95 |
+
μ λ κ·Ένλ©΄μ΄ μλ¬λ€κ³ μ
|
| 96 |
+
app.pyλΆν° λͺ»λ°λΌκ°μ΅λλ€.
|
| 97 |
+
μ΄μ¬λ...
|
| 98 |
+
μ μλ§μ...
|
| 99 |
+
μ΄λ κ² μ΄λ κ² νμΈμ 보λ€λ λ²νΌ νκ°μ© λλ₯΄λΌκ³ μ§μνκ³ λ°λΌνκ³ νλ λ°©λ²μ΄ μ’μκ² κ°νγ΄λ° γ
γ
|
| 100 |
+
νλ²λ§ λ λΆνλ립λλ€. μ΄λ ΅λ€μ;
|
| 101 |
+
λ΅
|
| 102 |
+
1
|
| 103 |
+
1
|
| 104 |
+
1
|
| 105 |
+
1
|
| 106 |
+
1
|
| 107 |
+
apache-2.0
|
| 108 |
+
1
|
| 109 |
+
νΌλΈλ¦??
|
| 110 |
+
1
|
| 111 |
+
1
|
| 112 |
+
1
|
| 113 |
+
1
|
| 114 |
+
μ μλ§μ
|
| 115 |
+
νμΌ??
|
| 116 |
+
1
|
| 117 |
+
App μμ Files
|
| 118 |
+
1
|
| 119 |
+
1
|
| 120 |
+
1
|
| 121 |
+
ν€λ³΄λλ‘ μ μΌλ©΄λλ건κ°μ?
|
| 122 |
+
λ³΅μ¬ λΆμ¬λ£κΈ° νμ
λ λ©λλ€.
|
| 123 |
+
requirements.txt
|
| 124 |
+
1
|
| 125 |
+
λ€
|
| 126 |
+
λ€
|
| 127 |
+
λ€
|
| 128 |
+
1
|
| 129 |
+
λ€.
|
| 130 |
+
1. λλ νκΉ
νμ΄μ€ κ·ΈλΌλμ€λ₯Ό λ°νμΌλ‘ λ€μν μ루μ
μ κ°λ°νλ μ λ¬Έ ITνλ‘κ·Έλ¨ κ°λ°μμΌ.
|
| 131 |
+
|
| 132 |
+
2. νκ΅μ΄λ‘ λ°λμ λ΅ν΄μΌ ν΄
|
| 133 |
+
|
| 134 |
+
3. κΈ°λ₯μ κ°λ΅νκ² μ€λͺ
νλ©΄
|
| 135 |
+
μ΄λ―Έμ§λ₯Ό νλ°±μ¬μ§μΌλ‘ λ³ννλ κΈ°λ₯μ΄κ³
|
| 136 |
+
μ
λ ₯μ μ΄λ―Έμ§λ₯Ό μ
λ‘λ νκ³
|
| 137 |
+
μΆλ ₯μ μ΄λ―Έμ§λ₯Ό 보μ¬μ£Όκ³ μΆκ°μ μΌλ‘ JPGλ‘ λ€μ΄λ‘λ
|
| 138 |
+
κ°λ₯νλλ‘ νλΌ
|
| 139 |
+
|
| 140 |
+
4. μΆμ²λ°©λ²μ μ μνκ³ μμΈν μ€λͺ
ν΄μ€
|
| 141 |
+
|
| 142 |
+
5. app.pyμ requirements.txtμ νλͺ©λ€λ‘ μ½λλ₯Ό μμ±ν΄
|
| 143 |
+
μ€ λΉλλ€.
|
| 144 |
+
1
|
| 145 |
+
1
|
| 146 |
+
1
|
| 147 |
+
1
|
| 148 |
+
2
|
| 149 |
+
λ€
|
| 150 |
+
λμ³€μ΄μ
|
| 151 |
+
1
|
| 152 |
+
μ§νΌν° μμ§ μΆλ ₯μ΄ λλ¬μ΄μγ
|
| 153 |
+
1
|
| 154 |
+
import gradio as gr
|
| 155 |
+
from PIL import Image
|
| 156 |
+
|
| 157 |
+
def convert_to_grayscale(image):
|
| 158 |
+
# μ΄λ―Έμ§λ₯Ό νλ°±μΌλ‘ λ³ν
|
| 159 |
+
grayscale_image = image.convert("L")
|
| 160 |
+
return grayscale_image
|
| 161 |
+
|
| 162 |
+
# κ·ΈλΌλμ€ μΈν°νμ΄μ€ ꡬμ±
|
| 163 |
+
iface = gr.Interface(
|
| 164 |
+
fn=convert_to_grayscale, # λ³ν ν¨μ
|
| 165 |
+
inputs=gr.Image(type="pil"), # PIL μ΄λ―Έμ§ μ
λ ₯
|
| 166 |
+
outputs=gr.Image(type="pil"), # PIL μ΄λ―Έμ§ μΆλ ₯
|
| 167 |
+
title="νλ°± μ¬μ§ λ³νκΈ°", # μ€νμ΄μ€ μ λͺ©
|
| 168 |
+
description="μΌλ° μ¬μ§μ νλ°± μ¬μ§μΌλ‘ λ³νν©λλ€.", # μ€λͺ
|
| 169 |
+
allow_flagging="never", # νλκ·Έ κΈ°λ₯ λΉνμ±ν
|
| 170 |
+
live=False # μ€μκ° λ³ν λΉνμ±ν
|
| 171 |
+
)
|
| 172 |
+
|
| 173 |
+
# μΈν°νμ΄μ€ μ€ν
|
| 174 |
+
if __name__ == "__main__":
|
| 175 |
+
iface.launch()
|
| 176 |
+
1
|
| 177 |
+
1
|
| 178 |
+
appμμ μμ νλμ?
|
| 179 |
+
1
|
| 180 |
+
GPT-4o λ²μ νμΈνμΈμ
|
| 181 |
+
λ€, Filesμμ λ€μ΄κ°μκ³ edit λλ¬μ μμ νμλ©΄ λ©λλ€
|
| 182 |
+
1
|
| 183 |
+
μ λ gradio
|
| 184 |
+
Pillow
|
| 185 |
+
numpy μ΄λ κ² λ¨λλ°μ
|
| 186 |
+
μ λ μ κ²½λκ³Ό κ°μμ
|
| 187 |
+
gptμ λ΅λ³μ΄ λ€λ₯Ό μ μκΈ° λλ¬Έμ κ·Έλλ‘ λΆμ¬λ£μΌμλ©΄ λ©λλ€~
|
| 188 |
+
μ λ μ κ²½λκ³Ό κ°μ΅λλ€.
|
| 189 |
+
1
|
| 190 |
+
2
|
| 191 |
+
1
|
| 192 |
+
2
|
| 193 |
+
μμ§ λͺ»λ°λΌκ°μ΄μγ
|
| 194 |
+
μ€μΉμ?? λ€μνλ²λ§
|
| 195 |
+
μ μμ§ λΉλ©μ€μΈλ―ν©λλ€.
|
| 196 |
+
dk Emqslek
|
| 197 |
+
μ λΉλλ€ λ¬λμΌλ‘
|
| 198 |
+
λ°νμμλ¬
|
| 199 |
+
μ€νν
ν λ°λ λμ΅λλ€
|
| 200 |
+
import gradio as gr
|
| 201 |
+
from PIL import Image
|
| 202 |
+
|
| 203 |
+
def convert_to_grayscale(image):
|
| 204 |
+
# μ΄λ―Έμ§λ₯Ό νλ°±μΌλ‘ λ³ν
|
| 205 |
+
grayscale_image = image.convert("L")
|
| 206 |
+
return grayscale_image
|
| 207 |
+
|
| 208 |
+
# κ·ΈλΌλμ€ μΈν°νμ΄μ€ ꡬμ±
|
| 209 |
+
iface = gr.Interface(
|
| 210 |
+
fn=convert_to_grayscale, # λ³ν ν¨μ
|
| 211 |
+
inputs=gr.Image(type="pil"), # PIL μ΄λ―Έμ§ μ
λ ₯
|
| 212 |
+
outputs=gr.Image(type="pil"), # PIL μ΄λ―Έμ§ μΆλ ₯
|
| 213 |
+
title="νλ°± μ¬μ§ λ³νκΈ°", # μ€νμ΄μ€ μ λͺ©
|
| 214 |
+
description="μΌλ° μ¬μ§μ νλ°± μ¬μ§μΌλ‘ λ³νν©λλ€.", # μ€λͺ
|
| 215 |
+
allow_flagging="never", # νλκ·Έ κΈ°λ₯ λΉνμ±ν
|
| 216 |
+
live=False # μ€μκ° λ³ν λΉνμ±ν
|
| 217 |
+
)
|
| 218 |
+
|
| 219 |
+
# μΈν°νμ΄μ€ μ€ν
|
| 220 |
+
if __name__ == "__main__":
|
| 221 |
+
iface.launch()
|
| 222 |
+
app μμ ν μ΄λ»κ² νλμ§ λ€μ 보μ¬μ£ΌμΈμγ
|
| 223 |
+
gradio
|
| 224 |
+
Pillow
|
| 225 |
+
μ΄κ±Έ μ΄λλ€ λ³΅μ¬ν΄μ λΆμ¬λ£μ΄μ?
|
| 226 |
+
μ λ μλ λ°νμ μλ¬λ€μ
|
| 227 |
+
μ€λ₯ λ‘κ·Έ κ°μ gptνν
λΆμ¬λ£κΈ°νμΈμ
|
| 228 |
+
λ΅ λΉλ©λ μ
|
| 229 |
+
μκΉκ» λ€ μ§μμ?
|
| 230 |
+
λΉλ© λλλ©΄ μ€νν
μΌλ‘ λ°λκ³ μ΄νμ λ¬λμΌλ‘ λ°λλλ€.
|
| 231 |
+
μ€νν
|
| 232 |
+
λ¬λ λ¨κ³ μ΄λ»κ² νλμ?
|
| 233 |
+
리콰μ΄μ΄λ μμ§ νμ§λ λͺ»νμ΄μ
|
| 234 |
+
μ΄μΌ μ΄λ―Έμ§ νλ°±λ³νκΈ°κ° μκ²Όλ€μ
|
| 235 |
+
λ°λ λ³κ²½μλ£
|
| 236 |
+
리콰μ΄μ΄λμ?
|
| 237 |
+
gradio
|
| 238 |
+
Pillow
|
| 239 |
+
μ΄κ±° λ£μ΄μ£Όμλ©΄ λ©λλ€
|
| 240 |
+
리콰μ΄μ΄ λ°λ μν λμ΄μ
|
| 241 |
+
λ€ κ·Έλ¬λ©΄ AppμΌλ‘ κ°μ
μ
|
| 242 |
+
νλ°±μ¬μ§ λ³νκΈ°λ μ΄λμμ μ겨μ?
|
| 243 |
+
μ~ μκ²Όλ€μ
|
| 244 |
+
μ΄λ―Έμ§λ₯Ό λ£μ΄λ³΄μΈμ~
|
| 245 |
+
1
|
| 246 |
+
μμ±..
|
| 247 |
+
λ¬μ΄μ
|
| 248 |
+
1
|
| 249 |
+
1
|
| 250 |
+
1
|
| 251 |
+
λ€
|
| 252 |
+
import gradio as gr
|
| 253 |
+
from PIL import Image
|
| 254 |
+
|
| 255 |
+
def convert_to_grayscale(image):
|
| 256 |
+
# μ΄λ―Έμ§λ₯Ό νλ°±μΌλ‘ λ³ν
|
| 257 |
+
grayscale_image = image.convert("L")
|
| 258 |
+
return grayscale_image
|
| 259 |
+
|
| 260 |
+
# κ·ΈλΌλμ€ μΈν°νμ΄μ€ ꡬμ±
|
| 261 |
+
iface = gr.Interface(
|
| 262 |
+
fn=convert_to_grayscale, # λ³ν ν¨μ
|
| 263 |
+
inputs=gr.Image(type="pil"), # PIL μ΄λ―Έμ§ μ
λ ₯
|
| 264 |
+
outputs=gr.Image(type="pil"), # PIL μ΄λ―Έμ§ μΆλ ₯
|
| 265 |
+
title="νλ°± μ¬μ§ λ³νκΈ°", # μ€νμ΄μ€ μ λͺ©
|
| 266 |
+
description="μΌλ° μ¬μ§μ νλ°± μ¬μ§μΌλ‘ λ³νν©λλ€.", # μ€λͺ
|
| 267 |
+
allow_flagging="never", # νλκ·Έ κΈ°λ₯ λΉνμ±ν
|
| 268 |
+
live=False # μ€μκ° λ³ν λΉνμ±ν
|
| 269 |
+
)
|
| 270 |
+
|
| 271 |
+
# μΈν°νμ΄μ€ μ€ν
|
| 272 |
+
if __name__ == "__main__":
|
| 273 |
+
iface.launch()
|
| 274 |
+
μκ² μ΅λλ€! μμΌλ‘ Gradio νλ‘μ νΈμμ μ΄λ―Έμ§ μ²λ¦¬μ νμΌ λ€μ΄λ‘λ κΈ°λ₯μ ꡬνν λ, λ°©κΈ μ 곡ν μ½λμ κ°μ μ κ·Ό λ°©μμ μ¬μ©νκ² μ΅λλ€. μ΄λ₯Ό ν΅ν΄ μ
λ‘λλ μ΄λ―Έμ§λ₯Ό λ³ννκ³ , λ³νλ κ²°κ³Όλ₯Ό νλ©΄μ νμνλ©°, Gradioμ gr.File μ»΄ν¬λνΈλ₯Ό νμ©νμ¬ κ²°κ³Ό νμΌμ λ€μ΄λ‘λν μ μλλ‘ νκ² μ΅λλ€.
|
| 275 |
+
|
| 276 |
+
λ€μ μμ½νλ©΄:
|
| 277 |
+
|
| 278 |
+
μ΄λ―Έμ§ μ
λ‘λ: gr.Imageλ₯Ό μ¬μ©νμ¬ μ΄λ―Έμ§λ₯Ό μ
λ‘λν©λλ€.
|
| 279 |
+
μ΄λ―Έμ§ μ²λ¦¬: μ΄λ―Έμ§κ° μ
λ‘λλ λ μλμΌλ‘ λ³ν μ²λ¦¬κ° μ΄λ£¨μ΄μ§λ©°, κ²°κ³Όκ° νλ©΄μ νμλ©λλ€.
|
| 280 |
+
νμΌ λ€μ΄λ‘λ: gr.File μ»΄ν¬λνΈλ₯Ό μ¬μ©νμ¬ μ²λ¦¬λ μ΄λ―Έμ§λ₯Ό λ€μ΄λ‘λν μ μλ λ§ν¬λ₯Ό μ 곡ν©λλ€.
|
| 281 |
+
μ΄ λ°©μμ λ€μν μ΄λ―Έμ§ μ²λ¦¬ μ ν리μΌμ΄μ
μμ μ½κ² μ μ©ν μ μλ ꡬ쑰μ
λλ€. ν₯νμλ μ΄ κ΅¬μ‘°λ₯Ό κΈ°λ°μΌλ‘ ꡬνμ μ§ννκ² μ΅λλ€. μΆκ° μμ²μ¬νμ΄ μμΌλ©΄ μΈμ λ μ§ λ§μν΄ μ£ΌμΈμ!
|
| 282 |
+
μ΄λ κ² λ¨λλ° λ§λμ
|
| 283 |
+
μΈλ¬Όμ¬μ§ νν°λ₯Ό μ ννμ¬ μ μ©νλλ‘ νλΌ.
|
| 284 |
+
[Soft Glow, Portrait Enhancer, Warm Tone, Cold Tone,
|
| 285 |
+
High-Key, Low-Key, Haze, Monochrome]
|
| 286 |
+
μ½λ 볡μ¬ν΄μ app,pyμ editμ λ£μ΄μ?
|
| 287 |
+
μκΉ κΈ°μ¬λμ΄μλ μ½λλ μ§μμ?
|
| 288 |
+
λ€ λ€ μ§μ°κ³ μλ‘ λ£μ΄μ£Όμλ©΄ λ©λλ€.
|
| 289 |
+
λΉλ© λ€μ΄κ°μ΅λλ€.
|
| 290 |
+
νλ©΄μ΄ μκΉλ λ¬λΌμ‘μ΄μ
|
| 291 |
+
λ°νμμλ¬λ¨λ€μ
|
| 292 |
+
? μ λ νλ©΄μ΄ λ€λ₯Έλ°μ?
|
| 293 |
+
μμ΄κ³ μκΉ νλ°±νλ©΄λ§λ€κΈ° μ΄νλ‘ μ ν λͺ»λ°λΌκ°κ³ μμ΄μγ
|
| 294 |
+
λ€ κ°μ μ½λ©μΌλ‘ νλλ° μ μλ¬κ° λ¨λ μ¬λμ΄ μκ³ λ¬λμ΄ λλ μ¬λμ΄ μμκΉμ?? μ§κΈ λΉμ₯μ λ¬λμΌλ‘ λ¨κΈ΄νλλ° μ κ·Έλ΄κΉμ
|
| 295 |
+
γ
γ
γ
μλ©΄μλ λͺ¨λ₯΄κ² μ΅λλ€
|
| 296 |
+
μ΄μ½λλ₯Ό μ μ©νλΌ
|
| 297 |
import gradio as gr
|
| 298 |
+
from PIL import Image
|
| 299 |
+
|
| 300 |
+
def convert_to_grayscale(image):
|
| 301 |
+
# μ΄λ―Έμ§λ₯Ό νλ°±μΌλ‘ λ³ν
|
| 302 |
+
grayscale_image = image.convert("L")
|
| 303 |
+
return grayscale_image
|
| 304 |
+
|
| 305 |
+
# κ·ΈλΌλμ€ μΈν°νμ΄μ€ ꡬμ±
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 306 |
iface = gr.Interface(
|
| 307 |
+
fn=convert_to_grayscale, # λ³ν ν¨μ
|
| 308 |
+
inputs=gr.Image(type="pil"), # PIL μ΄λ―Έμ§ μ
λ ₯
|
| 309 |
+
outputs=gr.Image(type="pil"), # PIL μ΄λ―Έμ§ μΆλ ₯
|
| 310 |
+
title="νλ°± μ¬μ§ λ³νκΈ°", # μ€νμ΄μ€ μ λͺ©
|
| 311 |
+
description="μΌλ° μ¬μ§μ νλ°± μ¬μ§μΌλ‘ λ³νν©λλ€.", # μ€λͺ
|
| 312 |
+
allow_flagging="never", # νλκ·Έ κΈ°λ₯ λΉνμ±ν
|
| 313 |
+
live=False # μ€μκ° λ³ν λΉνμ±ν
|
| 314 |
)
|
| 315 |
|
| 316 |
+
# μΈν°νμ΄μ€ μ€ν
|
| 317 |
+
if __name__ == "__main__":
|
| 318 |
+
iface.launch()
|
| 319 |
+
gptλ νμ λ€λ₯Έ λ΅λ³μ νκΈ° λλ¬Έμ κ·Έλ μ΅λλ€ γ
γ
|
| 320 |
+
μν,,
|
| 321 |
+
μΈλ¬Όμ¬μ§ νν°λ₯Ό μ ννμ¬ μ μ©νλλ‘ νλΌ.
|
| 322 |
+
[Soft Glow, Portrait Enhancer, Warm Tone, Cold Tone,
|
| 323 |
+
High-Key, Low-Key, Haze, Monochrome]
|
| 324 |
+
1
|
| 325 |
+
μλ¬
|
| 326 |
+
μ§νΌν°μμ λ€λ₯Έ μ½λλ₯Ό λ¬λΌκ³ ν΄μ λ£μ΄μ λ¬λμ λλ€μ
|
| 327 |
+
appμ μ΅μ’
μ½λλ₯Ό μμ ν¨λ
λλμ?
|
| 328 |
+
μ΄λμ μλ¬λ₯Ό μ°Ύμμ μ΄λμ μ½λλ₯Ό 볡μ¬νλΌλ건μ§μ
|
| 329 |
+
μ±μμ μΈλ¬Όμ¬μ§ νν° μ μ©κΈ°κ° λ¨λ€μ
|
| 330 |
+
μμ μ½λλ κΈ°μ‘΄μ½λ μ λΆ μμ νκ³ λΆμ¬λ£λμ?
|
| 331 |
+
μ΄νμλ, λ€ λ§μ΅λλ€~
|
| 332 |
+
1
|
| 333 |
+
μ§νΌν°νν
λλΌκ³ λ¬Όμ΄μ
|
| 334 |
+
μ μμ λ μμ±μ½λλ₯Ό λ€μ μ£Όλ€μ
|
| 335 |
+
import gradio as gr
|
| 336 |
+
from PIL import Image, ImageEnhance, ImageOps, ImageFilter
|
| 337 |
+
|
| 338 |
+
def apply_filter(image, filter_name):
|
| 339 |
+
if filter_name == "Soft Glow":
|
| 340 |
+
# μ΄λ―Έμ§μ μννΈ κΈλ‘μ° ν¨κ³Ό μ μ©
|
| 341 |
+
glow = image.filter(ImageFilter.GaussianBlur(5))
|
| 342 |
+
enhanced_image = Image.blend(image, glow, 0.5)
|
| 343 |
+
return enhanced_image
|
| 344 |
+
|
| 345 |
+
elif filter_name == "Portrait Enhancer":
|
| 346 |
+
# μΌκ΅΄ κ°μ‘° ν¨κ³Ό (νΌλΆ ν€ λΆλλ½κ², λ κ°μ‘°)
|
| 347 |
+
enhancer = ImageEnhance.Sharpness(image)
|
| 348 |
+
image = enhancer.enhance(1.5)
|
| 349 |
+
enhancer = ImageEnhance.Color(image)
|
| 350 |
+
image = enhancer.enhance(1.2)
|
| 351 |
+
return image
|
| 352 |
+
|
| 353 |
+
elif filter_name == "Warm Tone":
|
| 354 |
+
# λ°λ»ν ν€ νν° μ μ©
|
| 355 |
+
warm_tone = ImageEnhance.Color(image).enhance(1.3)
|
| 356 |
+
return warm_tone
|
| 357 |
+
|
| 358 |
+
elif filter_name == "Cold Tone":
|
| 359 |
+
# μ°¨κ°μ΄ ν€ νν° μ μ©
|
| 360 |
+
cold_tone = ImageOps.colorize(ImageOps.grayscale(image), black="blue", white="lightblue")
|
| 361 |
+
return cold_tone
|
| 362 |
+
|
| 363 |
+
elif filter_name == "High-Key":
|
| 364 |
+
# νμ΄ν€ νν° μ μ©
|
| 365 |
+
enhancer = ImageEnhance.Brightness(image)
|
| 366 |
+
high_key = enhancer.enhance(1.5)
|
| 367 |
+
enhancer = ImageEnhance.Contrast(high_key)
|
| 368 |
+
high_key = enhancer.enhance(0.8)
|
| 369 |
+
return high_key
|
| 370 |
+
|
| 371 |
+
elif filter_name == "Low-Key":
|
| 372 |
+
# λ‘μ°ν€ νν° μ μ©
|
| 373 |
+
enhancer = ImageEnhance.Contrast(image)
|
| 374 |
+
low_key = enhancer.enhance(1.5)
|
| 375 |
+
enhancer = ImageEnhance.Brightness(low_key)
|
| 376 |
+
low_key = enhancer.enhance(0.7)
|
| 377 |
+
return low_key
|
| 378 |
+
|
| 379 |
+
elif filter_name == "Haze":
|
| 380 |
+
# ν€μ΄μ¦ νν° μ μ©
|
| 381 |
+
haze = image.filter(ImageFilter.GaussianBlur(8))
|
| 382 |
+
enhancer = ImageEnhance.Brightness(haze)
|
| 383 |
+
haze = enhancer.enhance(1.2)
|
| 384 |
+
return haze
|
| 385 |
+
|
| 386 |
+
elif filter_name == "Monochrome":
|
| 387 |
+
# λͺ¨λ
Έν¬λ‘¬ νν° μ μ©
|
| 388 |
+
mono = image.convert("L")
|
| 389 |
+
mono = ImageOps.colorize(mono, black="black", white="white")
|
| 390 |
+
return mono
|
| 391 |
+
|
| 392 |
+
return image
|
| 393 |
+
|
| 394 |
+
def process_image(image, filter_name):
|
| 395 |
+
# μ νν νν° μ μ©
|
| 396 |
+
filtered_image = apply_filter(image, filter_name)
|
| 397 |
+
output_path = f"/tmp/{filter_name}_filtered_image.jpg"
|
| 398 |
+
(output_path, "JPEG")
|
| 399 |
+
return filtered_image, output_path
|
| 400 |
+
|
| 401 |
+
with gr.Blocks() as iface:
|
| 402 |
+
with gr.Row():
|
| 403 |
+
image_input = gr.Image(type="pil", label="μ΄λ―Έμ§ μ
λ‘λ")
|
| 404 |
+
filter_input = (
|
| 405 |
+
["Soft Glow", "Portrait Enhancer", "Warm Tone", "Cold Tone", "High-Key", "Low-Key", "Haze", "Monochrome"],
|
| 406 |
+
label="νν° μ ν",
|
| 407 |
+
value="Soft Glow"
|
| 408 |
+
)
|
| 409 |
+
|
| 410 |
+
image_output = gr.Image(type="pil", label="νν° μ μ©λ μ΄λ―Έμ§")
|
| 411 |
+
file_output = gr.File(file_count="single", label="λ€μ΄λ‘λ")
|
| 412 |
+
|
| 413 |
+
# μ΄λ―Έμ§ μ²λ¦¬ ν¨οΏ½οΏ½ μ°κ²°
|
| 414 |
+
process_button = gr.Button("νν° μ μ©")
|
| 415 |
+
(
|
| 416 |
+
fn=process_image,
|
| 417 |
+
inputs=[image_input, filter_input],
|
| 418 |
+
outputs=[image_output, file_output]
|
| 419 |
+
)
|
| 420 |
+
|
| 421 |
+
iface.title = "μΈλ¬Ό μ¬μ§μ μ΅μ νλ νν°"
|
| 422 |
+
iface.description = "μΈλ¬Ό μ¬μ§μ μ΅μ νλ λ€μν νν°λ₯Ό μ μ©ν μ μμ΅λλ€."
|
| 423 |
+
|
| 424 |
+
# μΈν°νμ΄μ€ μ€ν
|
| 425 |
if __name__ == "__main__":
|
| 426 |
iface.launch()
|