OpenCV RQDecomp3x3_1
The same 3x3 decomposition, UMat edition
- src
- mtxR
- mtxQ
- Qx
- Qy
- Qz
- unknown
- nparray_1
- nparray_2
- nparray_3
- nparray_4
- nparray_5
RQDecomp3x3_1 is the UMat overload of cv2.RQDecomp3x3, which means it is, for every purpose you'll ever have inside ComfyUI, the same node as RQDecomp3x3_0. The opencv-comfyui generator emitted a numbered variant for each OpenCV type-stub overload, and this is the second copy. No UI setting, no behavioral difference, no reason to prefer one over the other.
The full picture
For the full picture - what RQ decomposition does, why a calibration person would want a 3×3 matrix split into upper-triangular and orthogonal parts, and why the pack labels its first output unknown - read the RQDecomp3x3_0 article. The short version: src (NPARRAY) is a 3×3 matrix, the optional mtxR/mtxQ/Qx/Qy/Qz inputs are out-parameters you should leave unwired, and the six outputs are a spurious unknown socket (the generator couldn't parse OpenCV's Vec3d return type, so it typed it None) followed by R, Q, and the three Euler-angle vectors.
Installing
cd ComfyUI/custom_nodes
git clone https://github.com/geroldmeisinger/opencv-comfyui
pip install opencv-contrib-python
Install: ComfyUI Manager → search "opencv-comfyui", or the commands above, then pip install opencv-contrib-python for the dependency. No model files, pure computation.
Gotchas
Practical note for this whole family of geometry nodes: you're working with matrices here, not pixels. An NPARRAY in this pack is not automatically a picture, and feeding a matrix into Nparrays2Image is how you get the README's 'NoneType' object has no attribute 'shape' error. Keep that in mind, ignore the unknown output, and treat _1 as a drop-in replacement for _0 in any workflow that references it.
One more practical thing: src must be strictly 3×3 - anything else is an assertion error - and the five outputs it does give you (nparray_1 through nparray_5) come back as R, Q, and the Qx/Qy/Qz Euler-angle vectors in OpenCV's documented order. The node's own output names don't tell you which is which, so label them as you wire, or you'll lose track of a Q and grab a Qx.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| src | NPARRAY | — | |
| mtxRopt | NPARRAY | — | |
| mtxQopt | NPARRAY | — | |
| Qxopt | NPARRAY | — | |
| Qyopt | NPARRAY | — | |
| Qzopt | NPARRAY | — |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| unknown | None | — |
| nparray_1 | NPARRAY | — |
| nparray_2 | NPARRAY | — |
| nparray_3 | NPARRAY | — |
| nparray_4 | NPARRAY | — |
| nparray_5 | NPARRAY | — |