Nodes/opencv-comfyui/OpenCV Rodrigues_1
ComfyUI Node

OpenCV Rodrigues_1

Your twin, but the UMat one

By geroldmeisinger·Created about a year ago·Updated about a year ago· 35
OpenCV Rodrigues_1
  • src
  • dst
  • jacobian
  • nparray_0
  • nparray_1

This is Rodrigues_0 with a mustache drawn on. Same function (cv2.Rodrigues), same inputs, same outputs, same job: converting a 3D rotation vector (axis + angle packed into 3 numbers) to a 3×3 rotation matrix, or the matrix back into the vector. If you need the actual explanation, read the Rodrigues_0 article - this one exists because opencv-comfyui ships every function once per OpenCV type overload, and you're looking at the UMat variant.

Why the duplicate

Why does the pack do this? The OpenCV type stubs list nearly every function twice, once with cv2.typing.MatLike and once with UMat, and the author's generator just numbered them all. So you get _0 and _1 for each function, and for practical purposes inside ComfyUI they're identical - you're always feeding a numpy NPARRAY and getting one back. There's no setting on either variant to choose the backend; the distinction is invisible at the socket level. Pick either one and move on with your day.

Inputs and outputs

So: input src is your 3×1/1×3 rotation vector or 3×3 rotation matrix, the dst/jacobian optional inputs are out-parameters you should leave unwired (the pack README's standing advice), and the outputs nparray_0 / nparray_1 are the converted rotation plus the jacobian you can ignore. Same shapes, same errors, same everything.

Installing

cd ComfyUI/custom_nodes
git clone https://github.com/geroldmeisinger/opencv-comfyui
pip install opencv-contrib-python

Installing the pack gets you both variants at once, so there's nothing special to do here: ComfyUI Manager → search "opencv-comfyui", or the commands above, then make sure OpenCV is present with pip install opencv-contrib-python. No models to download.

Verdict

The one genuinely useful thing to remember about this pair: if you open a workflow someone shared and it references Rodrigues_1 while you grabbed Rodrigues_0, they're the same node for all practical purposes - a find-and-replace of the class name in the workflow JSON fixes it without changing behavior. That's the entire reason this article is short.

Categoryimage/OpenCV

Inputs (3)

NameTypeDefaultDescription
srcNPARRAY
dstoptNPARRAY
jacobianoptNPARRAY

Outputs (2)

NameTypeDescription
nparray_0NPARRAY
nparray_1NPARRAY