Flexible Combine Enhancements
Combine up to five enhancements — but the weights aren't in the UI
- original
- enhanced1
- enhanced2
- enhanced3
- enhanced4
- enhanced5
- IMAGE
Flexible Combine Enhancements looks like a strict upgrade to the pack's CombineEnhancements: instead of a fixed three enhanced inputs, it accepts up to five, all optional. Feed it one layer or five, and it blends them back onto your original. Flexible in the number of inputs, absolutely.
Here's the catch, and it's a real one: the per-layer weights (weight1 through weight5) live in the hidden section of the node's schema. Hidden inputs don't get widgets in the ComfyUI interface - they're passed as kwargs at runtime. What that means in practice is every enhanced input you connect gets the same flat weight of 0.2, and there is no slider anywhere to change that.
How it works
From the source, combine() collects whichever of enhanced1..5 are actually connected, grabs each one's weight (defaulting to 0.2), and does the same weighted blend as the rest of the pack:
combined = original * (1 - sum(weights)) + Σ (enhanced_i * weight_i)
The original's share is whatever's left over, so with one layer connected the original keeps 0.8; with three, it keeps 0.4 and each layer contributes 0.2. Result is clamped to 0–1. The implementation is tidy - it only blends what's plugged in, and it handles the zipping correctly.
The honest read
Calling it "Flexible" is half-true. The flexibility is real: optional inputs mean you can build one reusable node that does double duty for a two-layer and a four-layer blend without rewiring the graph. But the fixed weights mean you can't express "mostly CLAHE, a touch of texture." Every connected layer is a guest at the same table. If you need per-layer control, use the pack's plain CombineEnhancements (three layers, three real weight sliders) or ComprehensiveImageEnhancement (eight layers, full weight control). If you want a lot of layers at equal strength and don't want to fiddle, this is genuinely the one to grab.
Inputs and output
original- required IMAGE.enhanced1…enhanced5- optional IMAGEs; leave any of them unconnected and they're skipped.
Output is a single IMAGE. All connected inputs need to match in resolution; mismatches surface as a zip error mid-execution.
Installing
Same as every node in this pack - no models, CPU-only:
cd ComfyUI/custom_nodes
git clone https://github.com/hotpizzatactics/ComfyUI-WaterMark-Detector
or find ComfyUI-WaterMark-Detector in ComfyUI Manager. install.py pip-installs torch, numpy, opencv-python, scipy, and PyWavelets; opencv is the only substantial one and you almost certainly already have it. Restart ComfyUI after installing.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| original | IMAGE | — | |
| enhanced1opt | IMAGE | — | |
| enhanced2opt | IMAGE | — | |
| enhanced3opt | IMAGE | — | |
| enhanced4opt | IMAGE | — | |
| enhanced5opt | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |