Bounds to Bounding Boxes
Send WAS-measured regions back to ComfyUI core
- bounds
- bounding_boxes
- count
The sibling to Bounding Boxes to Bounds, and it exists for the same reason in the other direction: WAS Node Suite measures regions as bounds, and ComfyUI core's rectangle nodes want bounding boxes. If you found a region the WAS way - a mask turned into bounds via Mask to Bounds, or a region measured by Image Bounds or Inset Image Bounds - and you now want to hand that rectangle to ComfyUI's own Crop By Bounding Boxes, Draw BBoxes, or Layers From Bounding Boxes, this is the adapter you drop in the middle.
Under WAS Suite/Image/Bound, it takes two inputs. bounds is the IMAGE_BOUNDS value - wire in whatever measured the region (Mask to Bounds, Image Bounds, or Inset Image Bounds). label is a string that rides along on every box, like face or product; Draw BBoxes prints it beside the rectangle it draws, which is how you get annotated previews that say what each region is. Leave it empty and no label attaches. Two outputs: bounding_boxes (one box per bounds row, ready for the core nodes) and count.
Each bounds row becomes one box "with its origin at the top left corner - the same rectangle counted the other way." That phrasing is the whole job in a sentence: WAS's bounds and core's boxes describe identical rectangles with different conventions (inclusive edges here, width-and-height-from-corner there), and this node does the bookkeeping so you don't shave or stretch a crop by a pixel.
The direction of travel matters
Deciding which converter you need is just asking which system measured the region. WAS bounds in → core box nodes out = this node. Core box/detector output in → WAS crop/mask nodes out = Bounding Boxes to Bounds. People who don't notice the two systems exist get the pairing backwards and then wonder why a "converter" isn't accepting their wire - the input types (IMAGE_BOUNDS here, BOUNDING_BOX there) are the tell, and each converter only faces one way.
The common full loop uses both converters plus the filter: detector → Bounding Boxes Filter (clean up) → Bounding Boxes to Bounds (into WAS's mask/crop world) → work on the regions → Bounds to Bounding Boxes (back out) → core's Draw BBoxes for an annotated proof. It sounds like a lot of hops, but each one is a clean, readable step, and the alternative - hand-exploding batches to keep per-region rectangles straight - is worse.
Installing
Part of WAS Node Suite v3 (WASasquatch/was-node-suite-comfyui), WASasquatch's MIT pack - going since 2023, over a million downloads, and historically where these image/region operations first reached ComfyUI. A pure converter: no packages, no model weights, nothing downloaded. Requires ComfyUI 0.14.0+ - the v3 suite is written against ComfyUI's newer node backend.
Via ComfyUI Manager, search WAS Node Suite v3, or clone:
cd ComfyUI/custom_nodes
git clone https://github.com/WASasquatch/was-node-suite-comfyui
Restart ComfyUI and it appears under WAS Suite/Image/Bound. Missing after install? Update ComfyUI before troubleshooting anything else.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| bounds | IMAGE_BOUNDS | The regions to convert. Wire in Mask to Bounds, Image Bounds or Inset Image Bounds. | |
| label | STRING | A description carried on every box, such as `face` or `product`. Draw BBoxes prints it beside the rectangle. Empty attaches none. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| bounding_boxes | BOUNDING_BOX | One box per bounds row, ready for Crop By Bounding Boxes, Draw BBoxes or Layers From Bounding Boxes. |
| count | INT | How many boxes came out, for a switch that handles none. |