devendergarg14 commited on
Commit
5282488
·
verified ·
1 Parent(s): c1b3d98

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -10
app.py CHANGED
@@ -14,7 +14,7 @@ def get_segmentation_mask(image_url):
14
 
15
  def process_image(image, categories_to_hide):
16
  # Convert uploaded image to a PIL Image
17
- image = Image.open(image.name).convert("RGB")
18
 
19
  # Save temporarily and get the mask
20
  image.save("temp_image.png")
@@ -29,17 +29,23 @@ def process_image(image, categories_to_hide):
29
  "Skin (Hands, Feet, Body)": [4, 5, 6, 7, 10, 11, 13, 14, 15, 16, 19, 20, 21] # Hands, Feet, Arms, Legs, Torso
30
  }
31
 
32
- # Apply the mask over the original image
33
- image_array = np.array(image)
34
- masked_image = image_array.copy()
35
 
36
- # Black out selected categories
 
 
 
 
37
  for category in categories_to_hide:
38
  for idx in grouped_mapping.get(category, []):
39
- masked_image[mask_data == idx] = [0, 0, 0]
 
 
 
40
 
41
  # Convert back to PIL Image
42
- result_image = Image.fromarray(masked_image)
43
 
44
  return result_image
45
 
@@ -50,11 +56,11 @@ demo = gr.Interface(
50
  gr.File(label="Upload an Image"),
51
  gr.CheckboxGroup([
52
  "Background", "Clothes", "Face", "Hair", "Skin (Hands, Feet, Body)"
53
- ], label="Select Categories to Hide")
54
  ],
55
- outputs=gr.Image(label="Masked Image"),
56
  title="Segmentation Mask Editor",
57
- description="Upload an image, generate a segmentation mask, and select categories to black out."
58
  )
59
 
60
  if __name__ == "__main__":
 
14
 
15
  def process_image(image, categories_to_hide):
16
  # Convert uploaded image to a PIL Image
17
+ image = Image.open(image.name).convert("RGBA")
18
 
19
  # Save temporarily and get the mask
20
  image.save("temp_image.png")
 
29
  "Skin (Hands, Feet, Body)": [4, 5, 6, 7, 10, 11, 13, 14, 15, 16, 19, 20, 21] # Hands, Feet, Arms, Legs, Torso
30
  }
31
 
32
+ # Convert image to numpy array (RGBA)
33
+ image_array = np.array(image, dtype=np.uint8)
 
34
 
35
+ # Create an empty transparent image
36
+ transparent_image = np.zeros_like(image_array, dtype=np.uint8)
37
+
38
+ # Preserve only the selected mask regions, make everything else transparent
39
+ mask_combined = np.zeros_like(mask_data, dtype=bool)
40
  for category in categories_to_hide:
41
  for idx in grouped_mapping.get(category, []):
42
+ mask_combined |= (mask_data == idx)
43
+
44
+ # Apply the mask (preserve only selected regions)
45
+ transparent_image[mask_combined] = image_array[mask_combined]
46
 
47
  # Convert back to PIL Image
48
+ result_image = Image.fromarray(transparent_image, mode="RGBA")
49
 
50
  return result_image
51
 
 
56
  gr.File(label="Upload an Image"),
57
  gr.CheckboxGroup([
58
  "Background", "Clothes", "Face", "Hair", "Skin (Hands, Feet, Body)"
59
+ ], label="Select Categories to Preserve")
60
  ],
61
+ outputs=gr.Image(label="Masked Image", type="pil"),
62
  title="Segmentation Mask Editor",
63
+ description="Upload an image, generate a segmentation mask, and select categories to preserve while making the rest transparent."
64
  )
65
 
66
  if __name__ == "__main__":