Update app.py
Browse files
app.py
CHANGED
@@ -5,10 +5,7 @@ from PIL import Image, ImageEnhance
|
|
5 |
from gradio_imageslider import ImageSlider
|
6 |
|
7 |
def apply_filter(image, filter_type, intensity):
|
8 |
-
# PIL ์ด๋ฏธ์ง๋ฅผ numpy array๋ก ๋ณํ
|
9 |
image = np.array(image)
|
10 |
-
|
11 |
-
# ๊ฐ๋๋ฅผ 0.0์์ 1.0 ์ฌ์ด๋ก ์ ๊ทํ
|
12 |
normalized_intensity = intensity / 100.0
|
13 |
|
14 |
if filter_type == "Grayscale":
|
@@ -16,42 +13,32 @@ def apply_filter(image, filter_type, intensity):
|
|
16 |
elif filter_type == "Soft Glow":
|
17 |
base_intensity = 0.1
|
18 |
adjusted_intensity = base_intensity + (normalized_intensity * (1 - base_intensity))
|
19 |
-
|
20 |
gaussian = cv2.GaussianBlur(image, (15, 15), 0)
|
21 |
soft_glow = cv2.addWeighted(image, 1 - adjusted_intensity, gaussian, adjusted_intensity, 0)
|
22 |
return soft_glow
|
23 |
elif filter_type == "Portrait Enhancer":
|
24 |
base_intensity = 0.5
|
25 |
adjusted_intensity = base_intensity + (normalized_intensity * (1 - base_intensity))
|
26 |
-
|
27 |
image_pil = Image.fromarray(image)
|
28 |
-
|
29 |
enhancer = ImageEnhance.Sharpness(image_pil)
|
30 |
image_pil = enhancer.enhance(1 + 0.5 * adjusted_intensity)
|
31 |
-
|
32 |
enhancer = ImageEnhance.Color(image_pil)
|
33 |
image_pil = enhancer.enhance(1 + 0.5 * adjusted_intensity)
|
34 |
-
|
35 |
enhanced_image = np.array(image_pil)
|
36 |
return enhanced_image
|
37 |
elif filter_type == "Warm Tone":
|
38 |
-
# ๊ฐ๋๋ฅผ 30%๋ก ์ค์ (๋ฐ๋ปํ ํค ์ ์ฉ)
|
39 |
warm_image = cv2.addWeighted(image, 1.0, np.full(image.shape, (20, 66, 112), dtype=np.uint8), 0.3 * normalized_intensity, 0)
|
40 |
return warm_image
|
41 |
elif filter_type == "Cold Tone":
|
42 |
-
# ๊ฐ๋๋ฅผ 30%๋ก ์ค์ (์ฐจ๊ฐ์ด ํค ์ ์ฉ)
|
43 |
cold_image = cv2.addWeighted(image, 1.0, np.full(image.shape, (112, 66, 20), dtype=np.uint8), 0.3 * normalized_intensity, 0)
|
44 |
return cold_image
|
45 |
elif filter_type == "High-Key":
|
46 |
-
# ๊ฐ๋๋ฅผ 30%๋ก ์ค์
|
47 |
high_key = cv2.convertScaleAbs(image, alpha=1.0 + 0.3 * normalized_intensity, beta=20)
|
48 |
return high_key
|
49 |
elif filter_type == "Low-Key":
|
50 |
-
# ๊ฐ๋๋ฅผ 10%๋ก ์ค์
|
51 |
low_key = cv2.convertScaleAbs(image, alpha=1.0 - 0.1 * normalized_intensity, beta=-10)
|
52 |
return low_key
|
53 |
elif filter_type == "Haze":
|
54 |
-
# ๊ฐ๋๋ฅผ 30%๋ก ์ค์
|
55 |
haze = cv2.addWeighted(image, 1.0, np.full(image.shape, 255, dtype=np.uint8), 0.3 * normalized_intensity, 0)
|
56 |
return haze
|
57 |
else:
|
@@ -65,15 +52,13 @@ def convert_and_save(image, filter_type, intensity):
|
|
65 |
image_cv = cv2.cvtColor(np.array(image), cv2.COLOR_RGB2BGR)
|
66 |
filtered_image = apply_filter(image_cv, filter_type, intensity)
|
67 |
|
68 |
-
# OpenCV ์ด๋ฏธ์ง๋ฅผ ๋ค์ PIL๋ก ๋ณํ
|
69 |
original_image_pil = Image.fromarray(cv2.cvtColor(image_cv, cv2.COLOR_BGR2RGB))
|
70 |
filtered_image_pil = Image.fromarray(cv2.cvtColor(filtered_image, cv2.COLOR_BGR2RGB))
|
71 |
|
72 |
-
# ํํฐ ์ ์ฉ๋ ์ด๋ฏธ์ง๋ฅผ JPG๋ก ์ ์ฅ
|
73 |
output_path = "filtered_image.jpg"
|
74 |
filtered_image_pil.save(output_path)
|
75 |
|
76 |
-
return original_image_pil, filtered_image_pil, output_path
|
77 |
|
78 |
def get_filter_description(filter_type):
|
79 |
descriptions = {
|
|
|
5 |
from gradio_imageslider import ImageSlider
|
6 |
|
7 |
def apply_filter(image, filter_type, intensity):
|
|
|
8 |
image = np.array(image)
|
|
|
|
|
9 |
normalized_intensity = intensity / 100.0
|
10 |
|
11 |
if filter_type == "Grayscale":
|
|
|
13 |
elif filter_type == "Soft Glow":
|
14 |
base_intensity = 0.1
|
15 |
adjusted_intensity = base_intensity + (normalized_intensity * (1 - base_intensity))
|
|
|
16 |
gaussian = cv2.GaussianBlur(image, (15, 15), 0)
|
17 |
soft_glow = cv2.addWeighted(image, 1 - adjusted_intensity, gaussian, adjusted_intensity, 0)
|
18 |
return soft_glow
|
19 |
elif filter_type == "Portrait Enhancer":
|
20 |
base_intensity = 0.5
|
21 |
adjusted_intensity = base_intensity + (normalized_intensity * (1 - base_intensity))
|
|
|
22 |
image_pil = Image.fromarray(image)
|
|
|
23 |
enhancer = ImageEnhance.Sharpness(image_pil)
|
24 |
image_pil = enhancer.enhance(1 + 0.5 * adjusted_intensity)
|
|
|
25 |
enhancer = ImageEnhance.Color(image_pil)
|
26 |
image_pil = enhancer.enhance(1 + 0.5 * adjusted_intensity)
|
|
|
27 |
enhanced_image = np.array(image_pil)
|
28 |
return enhanced_image
|
29 |
elif filter_type == "Warm Tone":
|
|
|
30 |
warm_image = cv2.addWeighted(image, 1.0, np.full(image.shape, (20, 66, 112), dtype=np.uint8), 0.3 * normalized_intensity, 0)
|
31 |
return warm_image
|
32 |
elif filter_type == "Cold Tone":
|
|
|
33 |
cold_image = cv2.addWeighted(image, 1.0, np.full(image.shape, (112, 66, 20), dtype=np.uint8), 0.3 * normalized_intensity, 0)
|
34 |
return cold_image
|
35 |
elif filter_type == "High-Key":
|
|
|
36 |
high_key = cv2.convertScaleAbs(image, alpha=1.0 + 0.3 * normalized_intensity, beta=20)
|
37 |
return high_key
|
38 |
elif filter_type == "Low-Key":
|
|
|
39 |
low_key = cv2.convertScaleAbs(image, alpha=1.0 - 0.1 * normalized_intensity, beta=-10)
|
40 |
return low_key
|
41 |
elif filter_type == "Haze":
|
|
|
42 |
haze = cv2.addWeighted(image, 1.0, np.full(image.shape, 255, dtype=np.uint8), 0.3 * normalized_intensity, 0)
|
43 |
return haze
|
44 |
else:
|
|
|
52 |
image_cv = cv2.cvtColor(np.array(image), cv2.COLOR_RGB2BGR)
|
53 |
filtered_image = apply_filter(image_cv, filter_type, intensity)
|
54 |
|
|
|
55 |
original_image_pil = Image.fromarray(cv2.cvtColor(image_cv, cv2.COLOR_BGR2RGB))
|
56 |
filtered_image_pil = Image.fromarray(cv2.cvtColor(filtered_image, cv2.COLOR_BGR2RGB))
|
57 |
|
|
|
58 |
output_path = "filtered_image.jpg"
|
59 |
filtered_image_pil.save(output_path)
|
60 |
|
61 |
+
return [original_image_pil, filtered_image_pil], output_path
|
62 |
|
63 |
def get_filter_description(filter_type):
|
64 |
descriptions = {
|