Spaces:
ginipick
/
Running on Zero

multimodalart's picture
Squashing commit
4450790 verified
raw
history blame
3.06 kB
import comfy.utils
from PIL import Image
from rembg import remove
from ..utils import pil2tensor, tensor2pil
class MTB_ImageRemoveBackgroundRembg:
"""Removes the background from the input using Rembg."""
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"image": ("IMAGE",),
"alpha_matting": (
"BOOLEAN",
{"default": False},
),
"alpha_matting_foreground_threshold": (
"INT",
{"default": 240, "min": 0, "max": 255},
),
"alpha_matting_background_threshold": (
"INT",
{"default": 10, "min": 0, "max": 255},
),
"alpha_matting_erode_size": (
"INT",
{"default": 10, "min": 0, "max": 255},
),
"post_process_mask": (
"BOOLEAN",
{"default": False},
),
"bgcolor": (
"COLOR",
{"default": "#000000"},
),
},
}
RETURN_TYPES = (
"IMAGE",
"MASK",
"IMAGE",
)
RETURN_NAMES = (
"Image (rgba)",
"Mask",
"Image",
)
FUNCTION = "remove_background"
CATEGORY = "mtb/image"
# bgcolor: Optional[Tuple[int, int, int, int]]
def remove_background(
self,
image,
alpha_matting,
alpha_matting_foreground_threshold,
alpha_matting_background_threshold,
alpha_matting_erode_size,
post_process_mask,
bgcolor,
):
pbar = comfy.utils.ProgressBar(image.size(0))
images = tensor2pil(image)
out_img = []
out_mask = []
out_img_on_bg = []
for img in images:
img_rm = remove(
data=img,
alpha_matting=alpha_matting,
alpha_matting_foreground_threshold=alpha_matting_foreground_threshold,
alpha_matting_background_threshold=alpha_matting_background_threshold,
alpha_matting_erode_size=alpha_matting_erode_size,
session=None,
only_mask=False,
post_process_mask=post_process_mask,
bgcolor=None,
)
# extract the alpha to a new image
mask = img_rm.getchannel(3)
# add our bgcolor behind the image
image_on_bg = Image.new("RGBA", img_rm.size, bgcolor)
image_on_bg.paste(img_rm, mask=mask)
image_on_bg = image_on_bg.convert("RGB")
out_img.append(img_rm)
out_mask.append(mask)
out_img_on_bg.append(image_on_bg)
pbar.update(1)
return (
pil2tensor(out_img),
pil2tensor(out_mask),
pil2tensor(out_img_on_bg),
)
__nodes__ = [
MTB_ImageRemoveBackgroundRembg,
]