Nodes/Comfyui-SecNodes/Coordinate Plotter
ComfyUI Node

Coordinate Plotter

Draw your SeC points on the frame before you waste a run

By 9nate-drake·Created 10 months ago·Updated 8 months ago· 371
Coordinate Plotter
  • image
  • image
coordinates[{"x": 100, "y": 100}]
point_shapecircle
point_size10
point_color#00FF00
width512
height512

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 your annotation_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, or triangle. 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 #00FF00 or RGB like 255,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, then pip 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.

CategorySeC

Inputs (7)

NameTypeDefaultDescription
coordinatesSTRING[{"x": 100, "y": 100}]JSON coordinates to plot: '[{"x": 100, "y": 200}]'
imageoptIMAGEOptional image to plot on. If provided, overrides width/height.
point_shapeoptCOMBOcircleShape to draw for each coordinate point
point_sizeoptINT101–100Size of points in pixels
point_coloroptSTRING#00FF00Point color as hex '#FF0000' or RGB '255,0,0'
widthoptINT51264–4096Canvas width (ignored if image provided)
heightoptINT51264–4096Canvas height (ignored if image provided)

Outputs (1)

NameTypeDescription
imageIMAGE