CtrlNet CannyEdge Settings (JPS)
One menu for your edge-ControlNet knobs
- cannyedge_settings
Canny is the classic ControlNet condition - hard edge detection, clean thin lines, the one you reach for on architecture, product shots, or anything with crisp contours. This node is the settings hub for a Canny pass: pick your source image, dial in the edge thresholds, set how strongly and for how long the condition applies, then feed the single bundled output into the companion CtrlNet CannyEdge Pipe (JPS) node wherever downstream you actually need those values. It doesn't run Canny detection itself - it's the control panel, not the preprocessor.
The inputs that matter
cannyedge_from- "Source Image", "Support Image", or "Support Direct". Which reference image the Canny pass reads. Downstream on the Pipe node this comes back out as a plain integer, which lines up neatly with theselectinput on the pack's own Image Switch - this is clearly built to drive one directly.cannyedge_low/cannyedge_high(0–255, defaults 100 / 200) - the actual Canny algorithm's hysteresis thresholds. Lower values catch more (fainter) edges and get you a busier, noisier map; higher values keep only strong edges and give you a sparser one. 100/200 is the textbook OpenCV default and a sane starting point - if your Canny map looks like static, raise both; if it's missing detail you care about, lower both.cannyedge_strength(0–10, default 1) - the ControlNet weight applied at inference. The community-standard range for Canny specifically sits closer to 0.5–1.0 on older SD 1.5/SDXL setups and lower still (0.65–0.8) on the newer union ControlNets for Flux-family and 2025/2026 bases - the node's 0–10 range gives you a lot of headroom you won't normally need.cannyedge_start/cannyedge_end(0–1, defaults 0 / 1) - the step window. Releasing the condition before the end of sampling (end around 0.5) is the standard move for structure-heavy conditions like Canny: let it lock composition, then let the model finish detail unconstrained.
Output: cannyedge_settings, typed BASIC_PIPE - a JPS-specific bundle (a plain tuple under the hood, not Impact Pack's object of the same type name), meant only to feed the matching Pipe node.
Installing it
ComfyUI Manager: search JPS Custom Nodes for ComfyUI. Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/JPS-GER/ComfyUI_JPS-Nodes.git
Restart ComfyUI. Delete any older copy of the pack first if you have one - the author's own install note warns duplicate installs cause conflicts. Nothing here needs a model download; this node carries settings, not weights.
Where people get tripped up
A busy, noisy Canny map is almost always a threshold problem, not a ControlNet-strength problem - people crank cannyedge_strength down to fix an over-detailed edge map when adjusting cannyedge_low/cannyedge_high upward is the actual fix. Separately: this node only prepares settings. You still need a Canny preprocessor node (to actually run edge detection on the source image) and a loaded Canny ControlNet model plus an Apply ControlNet node downstream - if nothing's happening, check that chain rather than this one. And, like the rest of this pack's ControlNet Settings/Pipe family, it postdates the README's published node list, so don't treat that file as the full inventory.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| cannyedge_from | COMBO | 3 options: Source Image, Support Image, Support Direct | |
| cannyedge_strength | FLOAT | 1.00–10 | — |
| cannyedge_start | FLOAT | 0.000–1 | — |
| cannyedge_end | FLOAT | 1.000–1 | — |
| cannyedge_low | INT | 1000–255 | — |
| cannyedge_high | INT | 2000–255 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| cannyedge_settings | BASIC_PIPE | — |