Nodes/opencv-comfyui/OpenCV projectPoints_1
ComfyUI Node

OpenCV projectPoints_1

ProjectPoints_1 — should you actually install the camera-calibration dragon?

By geroldmeisinger·Created about a year ago·Updated about a year ago· 35
OpenCV projectPoints_1
  • objectPoints
  • rvec
  • tvec
  • cameraMatrix
  • distCoeffs
  • imagePoints
  • jacobian
  • nparray_0
  • nparray_1
aspectRatio

Here's the shortest useful version of this article: projectPoints_1 is a byte-for-byte twin of projectPoints_0, both generated from cv2.projectPoints overloads, and both project 3D world points into 2D image coordinates given a camera's intrinsics, rotation, and translation. There's no difference to choose between them.

The longer version is about whether you should care, because this is a node you'll either never touch or deeply need.

What it computes

The pinhole-camera projection: rotate the 3D points by rvec, translate by tvec, divide by depth, then map through cameraMatrix and correct for distCoeffs. Out come the 2D image points (nparray_0) and the projection's Jacobian (nparray_1, the derivative matrix optimizers use). All six required inputs - objectPoints, rvec, tvec, cameraMatrix, distCoeffs, aspectRatio - are things a calibrated-camera workflow already has and an image-generation workflow almost certainly doesn't.

The honest "should you?" checklist

You need projectPoints_1 if: you're doing camera calibration, pose estimation, or AR-style projection inside ComfyUI - drawing a 3D bounding box on a real photo, verifying a solvePnP result, building a calibration harness. Then this is the right tool, because it's a faithful port of the canonical OpenCV function and there's nothing friendlier in this space.

You don't need it if: your work is text-to-image or image-to-image. There is no way to get a real cameraMatrix for a generated image - it has no physical lens. A node asking for intrinsics is not the tool for "add a cool perspective to my anime girl." Skip it and don't feel bad.

The setup cost, in full

Everything is an NPARRAY, including cameraMatrix. That means you can't type a matrix into a widget - you have to build a 3×3 float32 array upstream, which this pack doesn't make pleasant. aspectRatio is a required FLOAT here (1.0 is neutral) even though OpenCV treats it as optional in most callers - that's an artifact of the auto-generator picking the fullest overload. And the imagePoints/jacobian optional inputs are out-parameters; the pack README's rule is to leave those unconnected.

Oh, and one more reason to double-check you actually want this: the pack's whole "expect dragons" warning from its author, Gerold Meisinger. When he released opencv-comfyui on r/comfyui in April 2025, he was explicit that these auto-generated nodes are for small, quick transformations - "not full-blown OpenCV apps within Comfy." projectPoints_1 is exactly the kind of node that pushes against that boundary: powerful, correct, and entirely uncompromising about making you supply a calibrated camera.

Install

Same as the rest of the pack, no special requirements:

cd ComfyUI/custom_nodes
git clone https://github.com/geroldmeisinger/opencv-comfyui

restart, then pip install opencv-contrib-python - or search "opencv-comfyui" in ComfyUI Manager and click install.

Bottom line

If you're building a real vision pipeline, projectPoints_1 is a legitimate, faithful building block - arguably the most "real computer vision" node in the whole pack. If you're not, it's a nice reminder that this pack is a mixed bag of genuinely useful tools and textbook-grade overkill. Know which one you're holding before you wire it up.

Categoryimage/OpenCV

Inputs (8)

NameTypeDefaultDescription
objectPointsNPARRAY
rvecNPARRAY
tvecNPARRAY
cameraMatrixNPARRAY
distCoeffsNPARRAY
aspectRatioFLOAT
imagePointsoptNPARRAY
jacobianoptNPARRAY

Outputs (2)

NameTypeDescription
nparray_0NPARRAY
nparray_1NPARRAY