Daniel Gatis 2 years ago
parent
commit
33bb506b60

+ 16 - 3
rembg/bg.py

@@ -74,6 +74,12 @@ def alpha_matting_cutout(
 
 
 
 
 def naive_cutout(img: PILImage, mask: PILImage) -> PILImage:
 def naive_cutout(img: PILImage, mask: PILImage) -> PILImage:
+    empty = Image.new("RGBA", (img.size), 0)
+    cutout = Image.composite(img, empty, mask)
+    return cutout
+
+
+def putalpha_cutout(img: PILImage, mask: PILImage) -> PILImage:
     img.putalpha(mask)
     img.putalpha(mask)
     return img
     return img
 
 
@@ -147,6 +153,8 @@ def remove(
     else:
     else:
         raise ValueError("Input type {} is not supported.".format(type(data)))
         raise ValueError("Input type {} is not supported.".format(type(data)))
 
 
+    putalpha = kwargs.pop("putalpha", False)
+
     # Fix image orientation
     # Fix image orientation
     img = fix_image_orientation(img)
     img = fix_image_orientation(img)
 
 
@@ -173,10 +181,15 @@ def remove(
                     alpha_matting_erode_size,
                     alpha_matting_erode_size,
                 )
                 )
             except ValueError:
             except ValueError:
-                cutout = naive_cutout(img, mask)
-
+                if putalpha:
+                    cutout = putalpha_cutout(img, mask)
+                else:
+                    cutout = naive_cutout(img, mask)
         else:
         else:
-            cutout = naive_cutout(img, mask)
+            if putalpha:
+                cutout = putalpha_cutout(img, mask)
+            else:
+                cutout = naive_cutout(img, mask)
 
 
         cutouts.append(cutout)
         cutouts.append(cutout)
 
 

BIN
tests/results/anime-girl-1.isnet-anime.png


BIN
tests/results/anime-girl-1.isnet-general-use.png


BIN
tests/results/anime-girl-1.sam.png


BIN
tests/results/anime-girl-1.silueta.png


BIN
tests/results/anime-girl-1.u2net.png


BIN
tests/results/anime-girl-1.u2net_cloth_seg.png


BIN
tests/results/anime-girl-1.u2net_human_seg.png


BIN
tests/results/anime-girl-1.u2netp.png


BIN
tests/results/car-1.isnet-anime.png


BIN
tests/results/car-1.isnet-general-use.png


BIN
tests/results/car-1.sam.png


BIN
tests/results/car-1.silueta.png


BIN
tests/results/car-1.u2net.png


BIN
tests/results/car-1.u2net_cloth_seg.png


BIN
tests/results/car-1.u2net_human_seg.png


BIN
tests/results/car-1.u2netp.png


BIN
tests/results/cloth-1.isnet-anime.png


BIN
tests/results/cloth-1.isnet-general-use.png


BIN
tests/results/cloth-1.sam.png


BIN
tests/results/cloth-1.silueta.png


BIN
tests/results/cloth-1.u2net.png


BIN
tests/results/cloth-1.u2net_cloth_seg.png


BIN
tests/results/cloth-1.u2net_human_seg.png


BIN
tests/results/cloth-1.u2netp.png