2.9 KiB
2.9 KiB
Documentation
- Class name: SEGSLabelFilter
- Category: ImpactPack/Util
- Output node: False
- Repo Ref: https://github.com/ltdrdata/ComfyUI-Impact-Pack.git
SEGSLabelFilter节点旨在根据预定义的标签集处理和过滤段。它允许包含特定的段类型,并处理将段分类为两组:符合指定标签的段和不符合的段。此节点在ImpactPack实用程序套件中用于进一步分析或处理的段选择中扮演关键角色。
Input types
Required
- segs
- 'segs'参数至关重要,因为它代表了要被过滤的段集合。它通过确定处理的输入数据集直接影响节点的操作。
- Comfy dtype: SEGS
- Python dtype: Tuple[Any, List[impact.core.SEG]]
- preset
- 'preset'参数指定节点将用于过滤段的预设检测标签列表。它是定义过滤标准的关键组成部分。
- Comfy dtype: STRING
- Python dtype: str
- labels
- 'labels'参数是一个多行字符串,允许用户列出他们希望允许的段类型。它之所以重要,是因为它根据用户输入设置了过滤标准。
- Comfy dtype: STRING
- Python dtype: str
Output types
- filtered_SEGS
- 'filtered_SEGS'输出包含符合指定标签的段,这是过滤过程的主要结果。
- Comfy dtype: SEGS
- Python dtype: Tuple[Any, List[impact.core.SEG]]
- remained_SEGS
- 'remained_SEGS'输出包括不符合指定标签的段,作为节点操作的次要结果。
- Comfy dtype: SEGS
- Python dtype: Tuple[Any, List[impact.core.SEG]]
Usage tips
- Infra type: CPU
Source code
class SEGSLabelFilter:
@classmethod
def INPUT_TYPES(s):
return {'required': {'segs': ('SEGS',), 'preset': (['all'] + defs.detection_labels,), 'labels': ('STRING', {'multiline': True, 'placeholder': 'List the types of segments to be allowed, separated by commas'})}}
RETURN_TYPES = ('SEGS', 'SEGS')
RETURN_NAMES = ('filtered_SEGS', 'remained_SEGS')
FUNCTION = 'doit'
CATEGORY = 'ImpactPack/Util'
@staticmethod
def filter(segs, labels):
labels = set([label.strip() for label in labels])
if 'all' in labels:
return (segs, (segs[0], []))
else:
res_segs = []
remained_segs = []
for x in segs[1]:
if x.label in labels:
res_segs.append(x)
elif 'eyes' in labels and x.label in ['left_eye', 'right_eye']:
res_segs.append(x)
elif 'eyebrows' in labels and x.label in ['left_eyebrow', 'right_eyebrow']:
res_segs.append(x)
elif 'pupils' in labels and x.label in ['left_pupil', 'right_pupil']:
res_segs.append(x)
else:
remained_segs.append(x)
return ((segs[0], res_segs), (segs[0], remained_segs))
def doit(self, segs, preset, labels):
labels = labels.split(',')
return SEGSLabelFilter.filter(segs, labels)