diff --git a/rembg/bg.py b/rembg/bg.py index 9c407d5..cc4f347 100644 --- a/rembg/bg.py +++ b/rembg/bg.py @@ -74,6 +74,12 @@ def alpha_matting_cutout( 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) return img @@ -147,6 +153,8 @@ def remove( else: raise ValueError("Input type {} is not supported.".format(type(data))) + putalpha = kwargs.pop("putalpha", False) + # Fix image orientation img = fix_image_orientation(img) @@ -173,10 +181,15 @@ def remove( alpha_matting_erode_size, ) except ValueError: - cutout = naive_cutout(img, mask) - + if putalpha: + cutout = putalpha_cutout(img, mask) + else: + cutout = naive_cutout(img, mask) else: - cutout = naive_cutout(img, mask) + if putalpha: + cutout = putalpha_cutout(img, mask) + else: + cutout = naive_cutout(img, mask) cutouts.append(cutout) diff --git a/tests/results/anime-girl-1.isnet-anime.png b/tests/results/anime-girl-1.isnet-anime.png index 3a240bb..b415933 100644 Binary files a/tests/results/anime-girl-1.isnet-anime.png and b/tests/results/anime-girl-1.isnet-anime.png differ diff --git a/tests/results/anime-girl-1.isnet-general-use.png b/tests/results/anime-girl-1.isnet-general-use.png index 8e954c9..f459719 100644 Binary files a/tests/results/anime-girl-1.isnet-general-use.png and b/tests/results/anime-girl-1.isnet-general-use.png differ diff --git a/tests/results/anime-girl-1.sam.png b/tests/results/anime-girl-1.sam.png index 9d3c9c0..daf576f 100644 Binary files a/tests/results/anime-girl-1.sam.png and b/tests/results/anime-girl-1.sam.png differ diff --git a/tests/results/anime-girl-1.silueta.png b/tests/results/anime-girl-1.silueta.png index a6f97b0..8f076d1 100644 Binary files a/tests/results/anime-girl-1.silueta.png and b/tests/results/anime-girl-1.silueta.png differ diff --git a/tests/results/anime-girl-1.u2net.png b/tests/results/anime-girl-1.u2net.png index 6be6bf2..97feccb 100644 Binary files a/tests/results/anime-girl-1.u2net.png and b/tests/results/anime-girl-1.u2net.png differ diff --git a/tests/results/anime-girl-1.u2net_cloth_seg.png b/tests/results/anime-girl-1.u2net_cloth_seg.png index f3aaca5..e56b7af 100644 Binary files a/tests/results/anime-girl-1.u2net_cloth_seg.png and b/tests/results/anime-girl-1.u2net_cloth_seg.png differ diff --git a/tests/results/anime-girl-1.u2net_human_seg.png b/tests/results/anime-girl-1.u2net_human_seg.png index 44c32d6..805b94d 100644 Binary files a/tests/results/anime-girl-1.u2net_human_seg.png and b/tests/results/anime-girl-1.u2net_human_seg.png differ diff --git a/tests/results/anime-girl-1.u2netp.png b/tests/results/anime-girl-1.u2netp.png index 433327f..24b2f8d 100644 Binary files a/tests/results/anime-girl-1.u2netp.png and b/tests/results/anime-girl-1.u2netp.png differ diff --git a/tests/results/car-1.isnet-anime.png b/tests/results/car-1.isnet-anime.png index 51d1069..37f4bec 100644 Binary files a/tests/results/car-1.isnet-anime.png and b/tests/results/car-1.isnet-anime.png differ diff --git a/tests/results/car-1.isnet-general-use.png b/tests/results/car-1.isnet-general-use.png index fce5597..ab3836c 100644 Binary files a/tests/results/car-1.isnet-general-use.png and b/tests/results/car-1.isnet-general-use.png differ diff --git a/tests/results/car-1.sam.png b/tests/results/car-1.sam.png index 36dd8c1..f36b669 100644 Binary files a/tests/results/car-1.sam.png and b/tests/results/car-1.sam.png differ diff --git a/tests/results/car-1.silueta.png b/tests/results/car-1.silueta.png index 52beb7c..9fd2086 100644 Binary files a/tests/results/car-1.silueta.png and b/tests/results/car-1.silueta.png differ diff --git a/tests/results/car-1.u2net.png b/tests/results/car-1.u2net.png index d29161e..88338ea 100644 Binary files a/tests/results/car-1.u2net.png and b/tests/results/car-1.u2net.png differ diff --git a/tests/results/car-1.u2net_cloth_seg.png b/tests/results/car-1.u2net_cloth_seg.png index 1fc035d..64ffd88 100644 Binary files a/tests/results/car-1.u2net_cloth_seg.png and b/tests/results/car-1.u2net_cloth_seg.png differ diff --git a/tests/results/car-1.u2net_human_seg.png b/tests/results/car-1.u2net_human_seg.png index b1a627d..1105205 100644 Binary files a/tests/results/car-1.u2net_human_seg.png and b/tests/results/car-1.u2net_human_seg.png differ diff --git a/tests/results/car-1.u2netp.png b/tests/results/car-1.u2netp.png index 32ae7f6..7ad593f 100644 Binary files a/tests/results/car-1.u2netp.png and b/tests/results/car-1.u2netp.png differ diff --git a/tests/results/cloth-1.isnet-anime.png b/tests/results/cloth-1.isnet-anime.png index bba3c79..f9db40e 100644 Binary files a/tests/results/cloth-1.isnet-anime.png and b/tests/results/cloth-1.isnet-anime.png differ diff --git a/tests/results/cloth-1.isnet-general-use.png b/tests/results/cloth-1.isnet-general-use.png index e38280c..c5a0e3d 100644 Binary files a/tests/results/cloth-1.isnet-general-use.png and b/tests/results/cloth-1.isnet-general-use.png differ diff --git a/tests/results/cloth-1.sam.png b/tests/results/cloth-1.sam.png index a0900ed..664a7dc 100644 Binary files a/tests/results/cloth-1.sam.png and b/tests/results/cloth-1.sam.png differ diff --git a/tests/results/cloth-1.silueta.png b/tests/results/cloth-1.silueta.png index d8a0993..5d98d32 100644 Binary files a/tests/results/cloth-1.silueta.png and b/tests/results/cloth-1.silueta.png differ diff --git a/tests/results/cloth-1.u2net.png b/tests/results/cloth-1.u2net.png index 5f4cdaa..df5fb74 100644 Binary files a/tests/results/cloth-1.u2net.png and b/tests/results/cloth-1.u2net.png differ diff --git a/tests/results/cloth-1.u2net_cloth_seg.png b/tests/results/cloth-1.u2net_cloth_seg.png index d7822cc..05557dd 100644 Binary files a/tests/results/cloth-1.u2net_cloth_seg.png and b/tests/results/cloth-1.u2net_cloth_seg.png differ diff --git a/tests/results/cloth-1.u2net_human_seg.png b/tests/results/cloth-1.u2net_human_seg.png index 4587062..efb4533 100644 Binary files a/tests/results/cloth-1.u2net_human_seg.png and b/tests/results/cloth-1.u2net_human_seg.png differ diff --git a/tests/results/cloth-1.u2netp.png b/tests/results/cloth-1.u2netp.png index 287c275..5ec1fb2 100644 Binary files a/tests/results/cloth-1.u2netp.png and b/tests/results/cloth-1.u2netp.png differ