MCPcopy Create free account
hub / github.com/WainWong/ComfyUI-Loop-image / MaskMerge

Class MaskMerge

mask_split.py:140–260  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

138
139
140class MaskMerge:
141 def __init__(self):
142 pass
143
144 @classmethod
145 def INPUT_TYPES(cls):
146 return {
147 "required": {
148 "original_image": ("IMAGE",),
149 },
150 "optional": {
151 "processed_images": ("IMAGE", {"forceInput": True}),
152 "masks": ("MASK", {"forceInput": True}),
153 }
154 }
155
156 RETURN_TYPES = ("IMAGE",)
157 RETURN_NAMES = ("merged_image",)
158 FUNCTION = "merge_masked_images"
159 CATEGORY = "CyberEveLoop🐰"
160
161 def standardize_input(self, image, processed_images=None, masks=None):
162 """
163 标准化输入格式
164 - image: [H,W,C] -> [1,H,W,C]
165 - processed_images: [...] -> [B,H,W,C]
166 - masks: [...] -> [B,H,W]
167 """
168 # 处理原始图像
169 if len(image.shape) == 3:
170 image = image.unsqueeze(0)
171 assert len(image.shape) == 4, f"Original image must be 4D [B,H,W,C], got shape {image.shape}"
172
173 # 处理processed_images
174 if processed_images is not None:
175 if isinstance(processed_images, list):
176 processed_images = torch.cat(processed_images, dim=0)
177 if len(processed_images.shape) == 3:
178 processed_images = processed_images.unsqueeze(0)
179 assert len(processed_images.shape) == 4, \
180 f"Processed images must be 4D [B,H,W,C], got shape {processed_images.shape}"
181
182 # 处理masks
183 if masks is not None:
184 if isinstance(masks, list):
185 masks = torch.cat(masks, dim=0)
186 if len(masks.shape) == 2:
187 masks = masks.unsqueeze(0)
188 assert len(masks.shape) == 3, f"Masks must be 3D [B,H,W], got shape {masks.shape}"
189
190 return image, processed_images, masks
191
192 def resize_tensor(self, x, size, mode='bilinear'):
193 """调整tensor尺寸的辅助函数"""
194 # 确保输入是4D tensor [B,C,H,W]
195 orig_dim = x.dim()
196 if orig_dim == 3:
197 x = x.unsqueeze(0)

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected