Nodes/ComfyUI-CVOverlay/CV Aesthetic Overlay
ComfyUI Node

CV Aesthetic Overlay

The paint job for all that tracking data

By joosthel·Created about a year ago·Updated about a year ago· 5
CV Aesthetic Overlay
  • image
  • detections
  • blobs
  • tracks
  • image
border_color00FF00
border_thickness2
text_colorFFFFFF
text_background_opacity0.70
text_size16
show_trackstrue
track_colorFF0080
track_thickness1
track_opacity0.60

The detector and the blob tracker are both data producers - they find things and hand you numbers. This node is where the numbers become a picture. CV Aesthetic Overlay takes the CV_DETECTIONS, CV_BLOBS, and CV_TRACKS outputs from the rest of the pack and draws them in that clean technical/surveillance style the pack is named for: corner brackets, crosshairs, trajectory trails, plexus lines, and little HUD info panels. If the pack is a sandwich, this is the bread you actually taste.

What it draws, and how

Feed it detection data and you get plain bounding boxes with a class + confidence label on a dark chip. Feed it blob data and it goes full surveillance mode: corner brackets on the box, a crosshair at the centroid, a fading trajectory trail behind the blob, and a text panel that tracks the blob's ID, age, size in pixels, and confidence. Feed it tracks (from the blob tracker) and it draws the connecting lines - and it's smart about them: strong connections render solid, medium ones dashed, weak ones dotted, and plexus connections get a faint glow treatment. Tracks are drawn first, behind everything else, so they don't cover your boxes.

The mechanism is plain OpenCV drawing - rectangles, lines, circles, putText - on a working copy of each frame. It's batch-aware too, so the same node handles both a single image and a stack of video frames.

The inputs that matter

Most of the inputs are styling, and they're all straightforward:

  • border_color / text_color / track_color - hex without the # (the tooltips say so: 00FF00 for green, FF0080 for that magenta, FFFFFF for white). Default look is green boxes, magenta tracks. Very 1999 hacker-movie, which is the point.
  • border_thickness (2) and track_thickness (1) - line weights.
  • text_size (16), text_background_opacity (0.7) - the label chips behind the text.
  • show_tracks (on) - master switch for the connecting lines. Turn it off if you just want boxes.
  • track_opacity (0.6) - how see-through the connecting lines are.

The three optional inputs are detections, blobs, and tracks - exactly the typed outputs from CV Object Detector and CV Blob Tracker. Wire in whichever one you're using. The single output is image, ready for a Preview node or VHS Video Combine.

Wiring it up

CV Object Detector → ┐
                      ├→ CV Aesthetic Overlay → Preview / VHS Video Combine
CV Blob Tracker   → ┘  (detections / blobs / tracks)

For the full constellation look, use the blob tracker's blobs and tracks outputs, with enable_plexus on in the tracker.

Installing

You know the drill by now - ComfyUI Manager (search "ComfyUI-CVOverlay") or:

cd ComfyUI/custom_nodes
git clone https://github.com/joosthel/ComfyUI-CVOverlay.git

Restart. This node needs the opencv stack (opencv-python, numpy) but not ultralytics - the drawing path is independent of YOLO.

Troubleshooting

  • Everything renders green no matter what you pick. The hex parser falls back to default green on invalid input. You're probably including the #, or pasting something with letters outside A-F. The parser actually tolerates a leading # and 3-digit shorthand, but six clean hex chars is the safe bet.
  • Boxes but no lines. show_tracks is off, or you didn't wire the tracks output in - the lines come from data, not from the image.
  • Text looks cramped or oversized. text_size scales both the font and its thickness; small sizes can look chunky at default spacing. It's a fixed look, not a layout editor - you control colors, thickness, and text size, not where the panels sit.
  • Double-drawn mess. You fed in both detections and blobs for the same image and got both drawn on top of each other. Usually you want one or the other.

Worth flagging: like the rest of this pack, it's new, small, and MIT-licensed, with no community track record yet - treat the exact aesthetics as a starting point, not a contract. If you want a different look, you're reading the code and hacking it.

CategoryCV/Overlay

Inputs (13)

NameTypeDefaultDescription
imageIMAGE
border_colorSTRING00FF00Border color in hex (without #, e.g., 00FF00 for green)
border_thicknessINT21–20
text_colorSTRINGFFFFFFText color in hex (without #, e.g., FFFFFF for white)
text_background_opacityFLOAT0.700–1Black background opacity behind text
text_sizeINT166–72
show_tracksBOOLEANtrueShow connecting lines between tracked blobs
track_colorSTRINGFF0080Track line color in hex (without #, e.g., FF0080 for magenta)
track_thicknessINT11–15
track_opacityFLOAT0.600–1
detectionsoptCV_DETECTIONS
blobsoptCV_BLOBS
tracksoptCV_TRACKS

Outputs (1)

NameTypeDescription
imageIMAGE