OpenCV composeRT_1
ComposeRT_0, again — the overload slot you can ignore
- rvec1
- tvec1
- rvec2
- tvec2
- rvec3
- tvec3
- dr3dr1
- dr3dt1
- dr3dr2
- dr3dt2
- dt3dr1
- dt3dt1
- dt3dr2
- dt3dt2
- nparray_0
- nparray_1
- nparray_2
- nparray_3
- nparray_4
- nparray_5
- nparray_6
- nparray_7
- nparray_8
- nparray_9
composeRT_1 is composeRT_0 wearing a different ID. Same cv2.composeRT call, same ten outputs, same behavior - I diffed the two node classes and the only difference is the name. This is what you get when a pack auto-generates a node for every overload in OpenCV's type stubs: cv2.composeRT declared two signatures, the generator numbered both, and you end up with a duplicate in your menu. Use composeRT_0, ignore this one, move on.
The short version
Composes two rigid-body transformations:
- rvec1 / rvec2 (NPARRAY) - rotation vectors (3×1 Rodrigues, not 3×3 matrices).
- tvec1 / tvec2 (NPARRAY) - translation vectors (3×1).
- Eight optional Jacobian out-params (
dr3…,dt3…) - skip them, per the README's "avoid the out-parameters" advice.
Outputs: nparray_0 (composed rotation vector), nparray_1 (composed translation), then eight derivative matrices. Only the first two matter for most work. The result means: R = R1 * R2, t = R1 * t2 + t1 - chain two camera poses into one.
Install
Standard for this pack:
cd ComfyUI/custom_nodes
git clone https://github.com/geroldmeisinger/opencv-comfyui
or ComfyUI Manager → "opencv-comfyui". Needs opencv-python-contrib (also numpy, torch in requirements.txt). The one OpenCV-environment trap to know: Cannot import name 'guidedFilter' from 'cv2.ximgproc' means conflicting OpenCV installs - clean up to a single one.
The honest framing
This is deep 3D-vision math, not an image tool - you'd only use it for pose-estimation, calibration, or camera-rig composition, and the inputs are pure nparrays rather than anything you'd get from a Load Image node. And since it's a byte-for-byte duplicate, the only reason to know composeRT_1 exists is so you don't spend ten minutes wondering whether the _1 variant does something extra. It doesn't.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| rvec1 | NPARRAY | — | |
| tvec1 | NPARRAY | — | |
| rvec2 | NPARRAY | — | |
| tvec2 | NPARRAY | — | |
| rvec3opt | NPARRAY | — | |
| tvec3opt | NPARRAY | — | |
| dr3dr1opt | NPARRAY | — | |
| dr3dt1opt | NPARRAY | — | |
| dr3dr2opt | NPARRAY | — | |
| dr3dt2opt | NPARRAY | — | |
| dt3dr1opt | NPARRAY | — | |
| dt3dt1opt | NPARRAY | — | |
| dt3dr2opt | NPARRAY | — | |
| dt3dt2opt | NPARRAY | — |
Outputs (10)
| Name | Type | Description |
|---|---|---|
| nparray_0 | NPARRAY | — |
| nparray_1 | NPARRAY | — |
| nparray_2 | NPARRAY | — |
| nparray_3 | NPARRAY | — |
| nparray_4 | NPARRAY | — |
| nparray_5 | NPARRAY | — |
| nparray_6 | NPARRAY | — |
| nparray_7 | NPARRAY | — |
| nparray_8 | NPARRAY | — |
| nparray_9 | NPARRAY | — |