Isolated Face Callout ✂️
A face on a transparent plate, ready to paste anywhere
- source_image
- callout_image
This node is the sibling of FaceCalloutEffect, and it answers a different question. The Effect node annotates your image in place; this one hands you just the face - a circular crop floating on a transparent background, ready to drop onto anything. Think of it as a face-sticker generator: avatars, collages, thumbnails, or the raw material for the pack's own IntegratedFaceComposite node.
One thing to get straight before you reach for it: this is not a background-removal/matting node. It doesn't segment hair or estimate alpha like BiRefNet-style models do. The face is cut out with a hard circle - transparency only exists outside that circle. If you need a clean head-and-shoulders cutout with real edges, look at an actual matting node. If you want a stylized "face in a coin" look, this is exactly it, and it runs entirely on CPU.
How it works
Same machinery as the rest of the pack: your source image becomes a PIL image, OpenCV's Haar cascade (bundled in the repo, no download) finds a face, and a square crop is taken around it with your padding. That crop gets resized to the callout size, a circular border is drawn (if you want one), the face is masked into the circle, and the whole thing comes out as an RGBA image - transparent everywhere except the circle.
The inputs that matter
source_image- the IMAGE containing the face.face_padding_percent- how much slack around the detected face (default 0.2). Low values crop tight, high values start swallowing the background.callout_scale_factor- size of the circle relative to the detected face.callout_border_thickness- set to 0 and you get a borderless floating face, which looks surprisingly clean against dark backgrounds.callout_border_color- a hex string like#FFFFFF.fallback_behavior-Blank Transparent Image(default) orError. Worth knowing the blank fallback is a fixed 256×256 transparent square, so if no face is found you get an invisible placeholder rather than nothing. That's a silent failure if you don't notice.multiple_face_behavior-Largest Face(default) orFirst Detected.
The output is callout_image, an RGBA IMAGE. Save it as a PNG to keep the alpha - a JPG will happily flatten the transparency to black and look like a bug.
Install
It's in the same pack as FaceCalloutEffect, so one install gets you all three. ComfyUI Manager → search "FaceCallout" → install, restart. Manual route:
cd ComfyUI/custom_nodes
git clone https://github.com/theshubzworld/ComfyUI-FaceCalloutNode
No model downloads - the Haar cascade ships inside the repo. The dependencies are torch, numpy, Pillow, and opencv-python; if a manual install complains about cv2, pip install opencv-python fixes it, since the pack doesn't declare its deps in a requirements.txt.
Issues you'll actually hit
Same detection limits as the rest of the pack: small faces, strong side profiles, and stylized art can all evade the old Haar cascade, and you'll get the blank-transparent fallback instead. Single image only - a batch gets truncated to its first frame. And remember the hard-circle output: outside the circle it's honest alpha, but there's no hair-level matting, so don't try to use this as a cutout tool for fine edges.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| source_image | IMAGE | — | |
| face_padding_percent | FLOAT | 0.200–1 | — |
| callout_scale_factor | FLOAT | 1.00.1–3 | — |
| callout_border_thickness | INT | 50–30 | — |
| callout_border_color | STRING | #FFFFFF | — |
| fallback_behavior | COMBO | Blank Transparent Image | 2 options: Blank Transparent Image, Error |
| multiple_face_behavior | COMBO | Largest Face | 2 options: First Detected, Largest Face |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| callout_image | IMAGE | — |