Coordinate Plotter
Draw your SeC points on the frame before you waste a run
- image
- image
Small node, real purpose. SeC Video Segmentation takes its point prompts as raw JSON - [{"x": 100, "y": 200}] - and typing pixel coordinates by hand is exactly the kind of thing you get wrong without noticing. You meant to put a point on the dog's face and it landed in the sky. Coordinate Plotter draws those points onto your image so you can look at where they'll land before you kick off a segmentation run that chews through several minutes and a chunk of VRAM.
Think of it as a sanity check. It's the same idea as previewing a mask before you inpaint - cheap to run, saves you from discovering the mistake after the expensive step.
How it works
Pure drawing, no model, no inference. You hand it a JSON list of coordinates and (optionally) the frame you're planning to segment, and it paints a marker at each point. Feed it the same coordinate string you're about to give SeC, wire the output into a preview node, and you can see whether your points are actually on the object. If they're off, fix the numbers and re-run - it's instant.
The inputs that matter
coordinates(required) - the JSON list of points, same format SeC uses:[{"x": 100, "y": 100}]. This is the whole point of the node; paste in the exact string you'll feed the segmenter.image(optional) - the frame to draw on. Give it the frame you'll annotate in SeC (usually the one at yourannotation_frame_idx) so the preview matches reality. If you skip it, the node draws on a blank canvas instead, sized by the two inputs below.width/height- canvas size when there's no image. Ignored the moment you connect an image, since it takes its dimensions from that.point_shape-circle,square, ortriangle. Cosmetic. Pick whatever's easiest to spot against your footage.point_size(1–100, default 10) - marker size in pixels. Bump it up on high-res frames so the dots don't vanish.point_color- hex like#00FF00or RGB like255,0,0. Default is bright green; switch to something that contrasts if your subject happens to be green.
One output: image (IMAGE) - send it to a Preview Image node and eyeball it.
How to install it
It ships in the same pack as the SeC nodes, so if you've installed those you already have it.
- ComfyUI Manager: search "SeC" or "SecNodes", install, restart.
- Manual:
cd ComfyUI/custom_nodes && git clone https://github.com/9nate-drake/Comfyui-SecNodes, thenpip install -r requirements.txt, and restart.
No model to download for this one - it's pure math and it's ready the moment ComfyUI restarts.
Common issues
There honestly aren't many - it's a drawing utility with no moving parts. The one thing to get right is the coordinate format: it's a JSON array of {"x": ..., "y": ...} objects, the same shape SeC expects, and malformed JSON is the only real way to break it. If your points show up in the wrong spot, that's the actual finding - better to see it here than after a full segmentation pass. And if you forget to connect an image, don't be surprised when your points land on a plain colored square; that's the blank-canvas fallback doing its job.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| coordinates | STRING | [{"x": 100, "y": 100}] | JSON coordinates to plot: '[{"x": 100, "y": 200}]' |
| imageopt | IMAGE | Optional image to plot on. If provided, overrides width/height. | |
| point_shapeopt | COMBO | circle | Shape to draw for each coordinate point |
| point_sizeopt | INT | 101–100 | Size of points in pixels |
| point_coloropt | STRING | #00FF00 | Point color as hex '#FF0000' or RGB '255,0,0' |
| widthopt | INT | 51264–4096 | Canvas width (ignored if image provided) |
| heightopt | INT | 51264–4096 | Canvas height (ignored if image provided) |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |