fix process image
Browse files- utils/helpers.py +15 -6
utils/helpers.py
CHANGED
@@ -15,20 +15,29 @@ def calculate_mask_area(mask: Image.Image, background=False) -> int:
|
|
15 |
return non_zero_pixels
|
16 |
|
17 |
def process_image(input_image: Image.Image) -> Image.Image:
|
18 |
-
|
19 |
-
input_image = input_image.convert('RGBA')
|
20 |
|
21 |
data = np.array(input_image)
|
22 |
# Split the image into its component channels
|
23 |
-
r, g, b, a = data.T
|
24 |
|
25 |
# Create a mask where all pixels that are black (0,0,0) will have 0 alpha
|
26 |
-
black_areas =
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
|
28 |
# Apply the mask to the alpha channel
|
29 |
-
|
30 |
|
31 |
-
return Image.fromarray(
|
32 |
|
33 |
def combine_images(original_image: Image.Image, masks: list) -> Image.Image:
|
34 |
combined = original_image.copy()
|
|
|
15 |
return non_zero_pixels
|
16 |
|
17 |
def process_image(input_image: Image.Image) -> Image.Image:
|
18 |
+
|
|
|
19 |
|
20 |
data = np.array(input_image)
|
21 |
# Split the image into its component channels
|
|
|
22 |
|
23 |
# Create a mask where all pixels that are black (0,0,0) will have 0 alpha
|
24 |
+
black_areas = data == 0
|
25 |
+
|
26 |
+
rgba_image = Image.new('RGBA', input_image.size)
|
27 |
+
rgba_data = np.array(rgba_image)
|
28 |
+
|
29 |
+
# Copy the grayscale data to all RGB channels
|
30 |
+
rgba_data[..., 0] = data
|
31 |
+
rgba_data[..., 1] = data
|
32 |
+
rgba_data[..., 2] = data
|
33 |
+
|
34 |
+
# Set alpha channel to 255 (fully opaque) for all pixels
|
35 |
+
rgba_data[..., 3] = 255
|
36 |
|
37 |
# Apply the mask to the alpha channel
|
38 |
+
rgba_data[..., 3][black_areas] = 0
|
39 |
|
40 |
+
return Image.fromarray(rgba_data)
|
41 |
|
42 |
def combine_images(original_image: Image.Image, masks: list) -> Image.Image:
|
43 |
combined = original_image.copy()
|