OpenCV findFundamentalMat_3
FindFundamentalMat_2's twin — the no-frills fundamental matrix
- points1
- points2
- mask
- nparray_0
- nparray_1
OpenCV findFundamentalMat_3 is findFundamentalMat_2 with the serial number filed off. Same five inputs (points1, points2, method, ransacReprojThreshold, confidence), same optional mask, same call into cv2.findFundamentalMat, same outputs: nparray_0 is the 3x3 fundamental matrix F and nparray_1 the RANSAC inlier mask. The duplicate exists purely because OpenCV's type stubs declare each function for both MatLike and UMat, and this pack's generator emits a node for every overload it finds. There's no behavioral difference to discover, so don't go hunting for one.
If you need the full picture, the _2 and _0 articles cover it: this is the uncalibrated way to relate two views, working on raw pixel correspondences with no camera intrinsics. Set method to 8 (RANSAC), ransacReprojThreshold around 3.0, feed it matched points, and the outputs are geometry - matrices and masks, not images.
Why these duplicates keep showing up
Once you've seen two or three of these, the pattern becomes useful rather than annoying. This pack wraps hundreds of OpenCV functions, and the author's README is upfront that the nodes are auto-generated, "ugly and complex to use," with dragons expected. _0/_1, _2/_3 pairs are the norm. So when a node number looks like it's "missing" or you find two nodes with identical inputs, you're almost certainly looking at a MatLike/UMat twin, and either one works.
The one thing that will actually bite you
Not the twin thing - the data types. NPARRAY is a pack-internal type, so every socket in this node only connects to this pack's own nparray-producing nodes (Image2Nparray, other OpenCV wrappers). You can't drop a ComfyUI IMAGE straight in. And the outputs here are not frames: trying to preview the fundamental matrix through Nparrays2Image triggers the pack's classic 'NoneType' object has no attribute 'shape' error, which is your cue to read the OpenCV docs about what the function actually returns.
Install
Same pack, same steps. ComfyUI Manager → search opencv-comfyui → install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/geroldmeisinger/opencv-comfyui
requirements.txt installs opencv-contrib-python, numpy, torch. The pack imports cv2 at load time - if that import fails (usually from conflicting OpenCV installs, with the guidedFilter error as the tell), none of its nodes register and ComfyUI complains at startup.
Reach for _2/_3 when you want the simpler API without maxIters; reach for _0/_1 when you want the extra RANSAC knob. Everything else about the math is identical.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| points1 | NPARRAY | — | |
| points2 | NPARRAY | — | |
| method | INT | — | |
| ransacReprojThreshold | FLOAT | — | |
| confidence | FLOAT | — | |
| maskopt | NPARRAY | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| nparray_0 | NPARRAY | — |
| nparray_1 | NPARRAY | — |