Extensions/ComfyUI CV
ComfyUI Extension

ComfyUI CV

Computer-vision nodes for ComfyUI: curated high-level nodes plus auto-generated wrappers for ~470 raw functions of the OpenCV (cv2) library. Built on the V3 node API.

By bmad4ever·Created 3 months ago·Updated 14 days ago· 1
bmad4ever/comfyui_cv
Nodes763
On cloudLocal install
Categoryimage/CV/low-level/cv2 A, image/CV/low-level/aruco
Stars1
Updated14 days ago

Nodes (763)

cv2.absdiff

Cv2.absdiff, the difference image — and why yours comes out black

image/CV/low-level/cv2 A
cv2.accumulate

Cv2.accumulate is one +=, not a running total

image/CV/low-level/cv2 A
cv2.accumulateProduct

The second-moment accumulator nobody explains

image/CV/low-level/cv2 A
cv2.accumulateSquare

Variance without a second pass

image/CV/low-level/cv2 A
cv2.accumulateWeighted

The running average, and the alpha=0 trap

image/CV/low-level/cv2 A
cv2.adaptiveThreshold

Stop blowing out half the page

image/CV/low-level/cv2 A
cv2.add

Cv2.add saturates — that's the entire point

image/CV/low-level/cv2 A
cv2.addWeighted

Crossfade, sharpen, and composite with one node

image/CV/low-level/cv2 A
cv2.applyColorMap (1/2)

Make a grey score map readable

image/CV/low-level/cv2 A
cv2.applyColorMap (2/2)

256 pixels, and OpenCV does the rest

image/CV/low-level/cv2 A
cv2.approxPolyDP

Turn a 400-point contour into four corners

image/CV/low-level/cv2 A
cv2.approxPolyN

\"give me a hexagon\", not \"give me fewer points\"

image/CV/low-level/cv2 A
cv2.arcLength

Perimeter in pixels, and the four things it feeds

image/CV/low-level/cv2 A
cv2.arrowedLine

Draw the arrow, then remember BGR means green is (0,255,0)

image/CV/low-level/cv2 A
cv2.aruco.drawDetectedCornersCharuco

Useful, and your output is raw NPARRAY

image/CV/low-level/aruco
cv2.batchDistance

The matcher under BFMatcher, for when you need the matrix

image/CV/low-level/cv2 B
cv2.bilateralFilter

Smooth the skin, keep the edges, pay the clock

image/CV/low-level/cv2 B
cv2.bitwise_and

Mask algebra on masks, bit surgery on photos

image/CV/low-level/cv2 B
cv2.bitwise_not

The boolean that also works on photographs

image/CV/low-level/cv2 B
cv2.bitwise_or

Union two masks and stop hand-drawing them twice

image/CV/low-level/cv2 B
cv2.bitwise_xor

The mask op that means 'in one, or the other, but not both'

image/CV/low-level/cv2 B
cv2.blendLinear

A per-pixel weighted average, for when a hard composite won't do

image/CV/low-level/cv2 B
cv2.blur

A mask feather that costs nothing

image/CV/low-level/cv2 B
cv2.borderInterpolate

The one-number answer for 'where does OpenCV think that pixel is?'

image/CV/low-level/cv2 B
cv2.boundingRect

Turn any mask or point cloud into a crop rectangle

image/CV/low-level/cv2 B
cv2.boxFilter

The same blur as cv2.blur, plus the option to *sum* instead of average

image/CV/low-level/cv2 B
cv2.boxPoints

Unwrap a rotated rectangle into its four corners

image/CV/low-level/cv2 B
cv2.broadcast

Stretch one value into a full array — without copying a byte

image/CV/low-level/cv2 B
cv2.calcCovarMatrix

The covariance matrix, and the flag you have to get right

image/CV/low-level/cv2 C
cv2.calcOpticalFlowFarneback

Dense motion, and the seven numbers that default to 0

image/CV/low-level/cv2 C
cv2.calcOpticalFlowPyrLK

Track points between two frames, and know which ones you lost

image/CV/low-level/cv2 C
cv2.calibrationMatrixValues

What your camera matrix actually means in millimetres

image/CV/low-level/cv2 C
cv2.CamShift

Colour tracking that runs in microseconds, and gives up when the subject hides

image/CV/low-level/cv2 C
cv2.Canny (1/2)

The edge map every 'canny' ControlNet was trained on

image/CV/low-level/cv2 C
cv2.Canny (2/2)

Run the hysteresis on derivatives you computed yourself

image/CV/low-level/cv2 C
cv2.cartToPolar

Turn 'how much left and how much down' into 'how far and which way'

image/CV/low-level/cv2 C
cv2.ccm.gammaCorrection

The gamma node with the same name as the other gamma node

image/CV/low-level/ccm
cv2.checkChessboard

Throw out the calibration shot before it poisons the fit

image/CV/low-level/cv2 C
cv2.checkHardwareSupport

Does this machine actually have AVX2, yes or no

image/CV/low-level/cv2 C
cv2.checkRange

Find the NaN before it paints your image black

image/CV/low-level/cv2 C
cv2.circle

The cheapest way to put a ring on a frame (and build a mask)

image/CV/low-level/cv2 C
cv2.clipLine

Trim a segment to a box, and answer \"is this visible at all?\"

image/CV/low-level/cv2 C
cv2.colorChange

Recolour one region without leaving the pixel layer

image/CV/low-level/cv2 C
cv2.compare

Turn \"which is bigger\" into a mask you can actually use

image/CV/low-level/cv2 C
cv2.compareHist

Score two histograms, and mind which direction \"better\" is

image/CV/low-level/cv2 C
cv2.completeSymm

The matrix half you didn't compute

image/CV/low-level/cv2 C
cv2.composeRT

Chain two camera poses into one (plus eight Jacobians you'll ignore)

image/CV/low-level/cv2 C
cv2.computeCorrespondEpilines

For a point here, the line it must lie on there

image/CV/low-level/cv2 C
cv2.computeECC

Score how well two images line up (no warping, just a number)

image/CV/low-level/cv2 C
cv2.connectedComponents

Count and label the blobs in a mask

image/CV/low-level/cv2 C
cv2.connectedComponentsWithAlgorithm

The same blobs, faster — if you can name the algorithm

image/CV/low-level/cv2 C
cv2.connectedComponentsWithStats

Blob count, boxes, areas and centroids in one pass

image/CV/low-level/cv2 C
cv2.connectedComponentsWithStatsWithAlgorithm

Stats plus an algorithm picker, minus the good names

image/CV/low-level/cv2 C
cv2.contourArea

How big is this shape, really

image/CV/low-level/cv2 C
cv2.convertMaps

Turn float remap maps into the fast fixed-point pair

image/CV/low-level/cv2 C
cv2.convertPointsFromHomogeneous

Get real pixels back out of homogeneous maths

image/CV/low-level/cv2 C
cv2.convertPointsToHomogeneous

Put the 1 on the end so matrices can act on your points

image/CV/low-level/cv2 C
cv2.convertScaleAbs

The node that makes float edge maps visible (and why it's wrong sometimes)

image/CV/low-level/cv2 C
cv2.convexHull

The rubber band around a point set

image/CV/low-level/cv2 C
cv2.convexityDefects

Find the dents — the geometry behind finger counting

image/CV/low-level/cv2 C
cv2.copyMakeBorder

The honest way to pad an image inside the graph

image/CV/low-level/cv2 C
cv2.copyTo

One image, one mask, hard edges, no blending

image/CV/low-level/cv2 C
cv2.cornerEigenValsAndVecs

The eigen-decomposition hiding under every corner detector

image/CV/low-level/cv2 C
cv2.cornerHarris

Cv2.cornerHarris hands you a score map, not a list of corners

image/CV/low-level/cv2 C
cv2.cornerMinEigenVal

The one-number corner test (and why it beats Harris)

image/CV/low-level/cv2 C
cv2.cornerSubPix

Turning pixel corners into sub-pixel corners

image/CV/low-level/cv2 C
cv2.correctChromaticAberration

Fixing colour fringing, if you have a calibration

image/CV/low-level/cv2 C
cv2.correctMatches

Fixing correspondences that only *almost* line up

image/CV/low-level/cv2 C
cv2.countNonZero

The mask-coverage meter you'll use more than you expect

image/CV/low-level/cv2 C
cv2.createHanningWindow

The window you multiply an image by before phase correlation

image/CV/low-level/cv2 C
cv2.cubeRoot

A math node you'll rarely need, and that's fine

image/CV/low-level/cv2 C
cv2.currentUIFramework

What UI is OpenCV built against? (in a headless build, nothing)

image/CV/low-level/cv2 C
cv2.CV_16FC

Building the half-float type code OpenCV keeps asking for

image/CV/low-level/cv2 C
cv2.CV_16SC

The type code behind fast fixed-point remapping

image/CV/low-level/cv2 C
cv2.CV_16UC

The type code for depth maps and stereo disparity

image/CV/low-level/cv2 C
cv2.CV_32FC

The type code that stops your Sobel filter truncating

image/CV/low-level/cv2 C
cv2.CV_32SC

The type code behind label maps and index arrays

image/CV/low-level/cv2 C
cv2.CV_32UC

Unsigned 32-bit, the newest and least useful type code here

image/CV/low-level/cv2 C
cv2.CV_64FC

Double precision, for the maths that actually needs it

image/CV/low-level/cv2 C
cv2.CV_64SC

Signed 64-bit integers, and why this node exists at all

image/CV/low-level/cv2 C
cv2.CV_64UC

The 64-bit-unsigned type code, and why it's a signpost

image/CV/low-level/cv2 C
cv2.CV_8SC

Signed 8-bit, and almost nothing wants it

image/CV/low-level/cv2 C
cv2.CV_8UC

The decoder ring for OpenCV's type codes

image/CV/low-level/cv2 C
cv2.CV_MAKETYPE

Build an OpenCV type code from depth + channels

image/CV/low-level/cv2 C
cv2.cvtColor

Gray, HSV, and the two traps nobody mentions

image/CV/low-level/cv2 C
cv2.cvtColorTwoPlane

When a codec hands you raw NV12 planes

image/CV/low-level/cv2 C
cv2.dct

JPEG's transform, exposed as two toggles

image/CV/low-level/cv2 D
cv2.decolor

Grayscale that keeps what your eye actually sees

image/CV/low-level/cv2 D
cv2.decomposeEssentialMat

Four candidate poses, one of which is real

image/CV/low-level/cv2 D
cv2.decomposeProjectionMatrix

Pull K, R and t back out of a camera matrix

image/CV/low-level/cv2 D
cv2.demosaicing

Turning a camera's raw Bayer plane into a picture

image/CV/low-level/cv2 D
cv2.depthTo3d

A depth map in, a point cloud out

image/CV/low-level/cv2 D
cv2.depthTo3dSparse

3D for just the pixels you asked about

image/CV/low-level/cv2 D
cv2.detail.createWeightMap

The stitcher's feathering weights, exposed

image/CV/low-level/detail
cv2.detailEnhance

Local contrast pop from two sliders, no model

image/CV/low-level/cv2 D
cv2.detail.normalizeUsingWeightMap

The second half of the stitcher's blend

image/CV/low-level/detail
cv2.detail.overlapRoi

Do these two frames even overlap?

image/CV/low-level/detail
cv2.detail.stitchingLogLevel

One integer, no inputs, mildly useful

image/CV/low-level/detail
cv2.determinant

Catch a degenerate matrix before it wrecks your graph

image/CV/low-level/cv2 D
cv2.dft

Into the frequency domain without leaving ComfyUI

image/CV/low-level/cv2 D
cv2.dilate

The mask-grower that eats hairline seams

image/CV/low-level/cv2 D
cv2.distanceTransform

Every pixel's distance to the nearest edge

image/CV/low-level/cv2 D
cv2.distanceTransformWithLabels

Which blob does this pixel belong to?

image/CV/low-level/cv2 D
cv2.divide (1/2)

Divide your image by a blur and the lighting disappears

image/CV/low-level/cv2 D
cv2.divide (2/2)

The reciprocal node, argument order and all

image/CV/low-level/cv2 D
cv2.divSpectrums

Frequency-domain division, i.e. deconvolution by hand

image/CV/low-level/cv2 D
cv2.dnn.blobFromImage

What a neural net actually wants as input

image/CV/low-level/dnn
cv2.dnn.getInferenceEngineBackendType

A five-second answer to 'what is dnn running on?'

image/CV/low-level/dnn
cv2.dnn.getInferenceEngineCPUType

The boring answer is the good answer

image/CV/low-level/dnn
cv2.dnn.getInferenceEngineVPUType

The node for hardware you don't have

image/CV/low-level/dnn
cv2.dnn.readTensorFromONNX

Get a plain array out of an ONNX file

image/CV/low-level/dnn
cv2.dnn.setInferenceEngineBackendType

A global switch you probably shouldn't flip

image/CV/low-level/dnn
cv2.drawChessboardCorners

The sanity check that saves your calibration

image/CV/low-level/cv2 D
cv2.drawFrameAxes

See where a solved camera pose actually points

image/CV/low-level/cv2 D
cv2.drawMarker

Mark a point so you can actually see it

image/CV/low-level/cv2 D
cv2.edgePreservingFilter

Smooth the skin, keep the eyelashes

image/CV/low-level/cv2 E
cv2.eigen

Eigenvalues for people who don't want a linear algebra lecture

image/CV/low-level/cv2 E
cv2.eigenNonSymmetric

Real eigenvalues only, and it won't tell you when they aren't

image/CV/low-level/cv2 E
cv2.ellipse (1/2)

Circles are just a special case, and half-axes will bite you

image/CV/low-level/cv2 E
cv2.ellipse (2/2)

The fitEllipse shortcut nobody notices

image/CV/low-level/cv2 E
cv2.EMD

The distance metric you don't need until you really do

image/CV/low-level/cv2 E
cv2.equalizeHist

The 90s contrast trick your face detector still wants

image/CV/low-level/cv2 E
cv2.erode

Shrink a mask the right way (the kernel is the whole story)

image/CV/low-level/cv2 E
cv2.estimateAffine2D

Fit a transform to two point sets and get the outliers told on

image/CV/low-level/cv2 E
cv2.estimateAffine3D (1/2)

Registering two 3D point clouds, outliers included

image/CV/low-level/cv2 E
cv2.estimateAffine3D (2/2)

The no-RANSAC overload, and the reflection switch

image/CV/low-level/cv2 E
cv2.estimateAffinePartial2D

The 4-DOF fit that doesn't invent shear

image/CV/low-level/cv2 E
cv2.estimateChessboardSharpness

Is your calibration shot actually in focus?

image/CV/low-level/cv2 E
cv2.estimateTranslation3D

When you know the clouds only shifted

image/CV/low-level/cv2 E
cv2.exp

It's e^x, and that matters

image/CV/low-level/cv2 E
cv2.extractChannel

Pull one channel out, and the BGR/RGB trap waiting in it

image/CV/low-level/cv2 E
cv2.face.drawFacemarks

Plot landmark points on a face, but you bring the points

image/CV/low-level/face
cv2.face.getFacesHAAR

Haar face detection in one shot, with no knobs to turn

image/CV/low-level/face
cv2.face.loadFacePoints

Read 68 landmark points out of a .pts file

image/CV/low-level/face
cv2.fastAtan2

Two numbers in, degrees out (and that's the point)

image/CV/low-level/cv2 F
cv2.fastNlMeansDenoising

The classic denoiser, and yes it really is that slow

image/CV/low-level/cv2 F
cv2.fastNlMeansDenoisingColored

Denoise in LAB so the colour doesn't drift

image/CV/low-level/cv2 F
cv2.fillConvexPoly

Turn four points into a mask (mind the LINE_AA default)

image/CV/low-level/cv2 F
cv2.filter2D

Write the kernel nobody has a node for

image/CV/low-level/cv2 F
cv2.filter2Dp

Same maths, different door — and a raw output instead of an image

image/CV/low-level/cv2 F
cv2.filterSpeckles

Killing Speckles with cv2.filterSpeckles

image/CV/low-level/cv2 F
cv2.find4QuadCornerSubpix

Refining Chessboard Corners with cv2.find4QuadCornerSubpix

image/CV/low-level/cv2 F
cv2.findChessboardCorners

Cv2.findChessboardCorners in ComfyUI

image/CV/low-level/cv2 F
cv2.findChessboardCornersSB

Cv2.findChessboardCornersSB

image/CV/low-level/cv2 F
cv2.findChessboardCornersSBWithMeta

Cv2.findChessboardCornersSBWithMeta

image/CV/low-level/cv2 F
cv2.findEssentialMat (1/3)

Cv2.findEssentialMat (1/3), the One That Wants Your Camera Matrix

image/CV/low-level/cv2 F
cv2.findEssentialMat (2/3)

Cv2.findEssentialMat (2/3)

image/CV/low-level/cv2 F
cv2.findEssentialMat (3/3)

Cv2.findEssentialMat (3/3)

image/CV/low-level/cv2 F
cv2.findFundamentalMat (1/2)

Cv2.findFundamentalMat (1/2)

image/CV/low-level/cv2 F
cv2.findFundamentalMat (2/2)

Cv2.findFundamentalMat (2/2)

image/CV/low-level/cv2 F
cv2.findHomography

Cv2.findHomography

image/CV/low-level/cv2 F
cv2.findNonZero

Cv2.findNonZero

image/CV/low-level/cv2 F
cv2.findTransformECC (1/2)

Cv2.findTransformECC (1/2)

image/CV/low-level/cv2 F
cv2.findTransformECC (2/2)

Cv2.findTransformECC (2/2)

image/CV/low-level/cv2 F
cv2.findTransformECCWithMask

Cv2.findTransformECCWithMask

image/CV/low-level/cv2 F
cv2.finiteMask

NaN Hunting With cv2.finiteMask

image/CV/low-level/cv2 F
cv2.fisheye.distortPoints (1/2)

Cv2.fisheye.distortPoints (1/2)

image/CV/low-level/fisheye
cv2.fisheye.distortPoints (2/2)

Cv2.fisheye.distortPoints (2/2)

image/CV/low-level/fisheye
cv2.fisheye.estimateNewCameraMatrixForUndistortRectify

Cv2.fisheye.estimateNewCameraMatrixForUndistortRectify

image/CV/low-level/fisheye
cv2.fisheye.initUndistortRectifyMap

Cv2.fisheye.initUndistortRectifyMap

image/CV/low-level/fisheye
cv2.fisheye.projectPoints

Checking a fisheye pose before you believe it

image/CV/low-level/fisheye
cv2.fisheye.solvePnP

Pose from 3D-2D pairs, the wide-lens version

image/CV/low-level/fisheye
cv2.fisheye.solvePnPRansac

The fisheye pose solver you actually want

image/CV/low-level/fisheye
cv2.fisheye.stereoRectify

Making two fisheye cameras comparable

image/CV/low-level/fisheye
cv2.fisheye.undistortImage

Straightening a wide-angle frame

image/CV/low-level/fisheye
cv2.fisheye.undistortPoints

Fix the coordinates, not the pixels

image/CV/low-level/fisheye
cv2.fitEllipse

Turning a pile of points into one ellipse

image/CV/low-level/cv2 F
cv2.fitEllipseAMS

For when your ellipse points aren't evenly spread

image/CV/low-level/cv2 F
cv2.fitEllipseDirect

The ellipse fit that won't hand you nonsense

image/CV/low-level/cv2 F
cv2.fitLine

The dominant direction through a point set

image/CV/low-level/cv2 F
cv2.flip

Mirror an image, a mask or a latent in one node

image/CV/low-level/cv2 F
cv2.flipND

Flip one axis of the array you're actually holding

image/CV/low-level/cv2 F
cv2.floodFill

The magic wand Photoshop has and ComfyUI mostly doesn't

image/CV/low-level/cv2 F
cv2.ft.createKernel

The smoothing scale knob nobody told you about

image/CV/low-level/ft
cv2.ft.createKernel1

Building a fuzzy kernel from your own basis

image/CV/low-level/ft
cv2.ft.filter

A denoiser that isn't a blur, and needs no model

image/CV/low-level/ft
cv2.ft.FT02D_components

The half of the fuzzy transform you can edit

image/CV/low-level/ft
cv2.ft.FT02D_FL_process

Fuzzy-transform smoothing in one node

image/CV/low-level/ft
cv2.ft.FT02D_FL_process_float

The careful version of the one-step fuzzy filter

image/CV/low-level/ft
cv2.ft.FT02D_inverseFT

Rebuild a picture from fuzzy coefficients

image/CV/low-level/ft
cv2.ft.FT02D_iteration

The one node in this pack that wants its own output wired back in

image/CV/low-level/ft
cv2.ft.FT02D_process

A smoother that fits windows instead of averaging them (fuzzy transform, one step)

image/CV/low-level/ft
cv2.ft.FT12D_components

The fuzzy transform's model of your image, before it's turned back into pixels

image/CV/low-level/ft
cv2.ft.FT12D_createPolynomMatrixHorizontal

An OpenCV helper matrix, exposed because the generator wraps everything

image/CV/low-level/ft
cv2.ft.FT12D_createPolynomMatrixVertical

The other half of the fuzzy transform's gradient basis

image/CV/low-level/ft
cv2.ft.FT12D_inverseFT

Turning fuzzy-transform components back into a picture

image/CV/low-level/ft
cv2.ft.FT12D_polynomial

Noise-robust gradients, from a fit instead of a difference kernel

image/CV/low-level/ft
cv2.ft.FT12D_process

The fuzzy transform, upgraded so gradients don't come out as staircases

image/CV/low-level/ft
cv2.ft.inpaint

The third inpainter, and the one with the backwards mask

image/CV/low-level/ft
cv2.GaussianBlur

Gaussian blur with the knobs core ComfyUI hides from you

image/CV/low-level/cv2 G
cv2.gemm

Actual matrix multiplication inside a ComfyUI graph

image/CV/low-level/cv2 G
cv2.getAffineTransform

Three points in, one warp matrix out

image/CV/low-level/cv2 G
cv2.getClosestEllipsePoints

The ellipse function OpenCV 5 added and nobody has heard of

image/CV/low-level/cv2 G
cv2.getCPUFeaturesLine

\"Why is this node fast for them and slow for me?\" — one string that answers it

image/CV/low-level/cv2 G
cv2.getCPUTickCount

Timing a node from inside the graph

image/CV/low-level/cv2 G
cv2.getDefaultAlgorithmHint

The one-value node that explains why two identical installs disagree

image/CV/low-level/cv2 G
cv2.getDefaultNewCameraMatrix

The cheap camera matrix you need before you can undistort anything

image/CV/low-level/cv2 G
cv2.getDerivKernels

Sobel is two 1-D filters glued together — here they are separately

image/CV/low-level/cv2 G
cv2.getFontScaleFromHeight

\"Make this label 40 pixels tall\" — the number putText never gave you

image/CV/low-level/cv2 G
cv2.getGaborKernel

A kernel that finds stripes at exactly the angle and spacing you pick

image/CV/low-level/cv2 G
cv2.getGaussianKernel

The blur kernel you only need when GaussianBlur isn't enough

image/CV/low-level/cv2 G
cv2.getHardwareFeatureName

What OpenCV thinks your CPU can do

image/CV/low-level/cv2 G
cv2.getNumberOfCPUs

How many cores OpenCV is willing to use

image/CV/low-level/cv2 G
cv2.getNumThreads

The thread count OpenCV is actually running with

image/CV/low-level/cv2 G
cv2.getOptimalDFTSize

Pad before you FFT, or pay for it

image/CV/low-level/cv2 G
cv2.getOptimalNewCameraMatrix

The answer to black corners after undistort

image/CV/low-level/cv2 G
cv2.getPerspectiveTransform

Four points in, one homography out

image/CV/low-level/cv2 G
cv2.getRectSubPix

Crop at x=100.5 and get away with it

image/CV/low-level/cv2 G
cv2.getRotationMatrix2D

The 2×3 matrix behind every rotate-this-image node

image/CV/low-level/cv2 G
cv2.getStructuringElement

The kernel factory every morphology graph needs

image/CV/low-level/cv2 G
cv2.getTextSize

Measure the label before you draw it

image/CV/low-level/cv2 G
cv2.getThreadNum

The answer is zero, and that's fine

image/CV/low-level/cv2 G
cv2.getTickCount

A stopwatch you have to read in pairs

image/CV/low-level/cv2 G
cv2.getTickFrequency

The denominator that makes getTickCount mean something

image/CV/low-level/cv2 G
cv2.getValidDisparityROI

Crop your disparity map before you trust it

image/CV/low-level/cv2 G
cv2.getVersionMajor

Is this machine on OpenCV 4 or 5?

image/CV/low-level/cv2 G
cv2.getVersionMinor

The digit that explains a missing node

image/CV/low-level/cv2 G
cv2.getVersionRevision

It returns 0, and the 93 in the wheel name isn't it

image/CV/low-level/cv2 G
cv2.getVersionString

The five-second check that explains a broken node pack

image/CV/low-level/cv2 G
cv2.goodFeaturesToTrack (1/2)

The corner detector behind every tracking pipeline

image/CV/low-level/cv2 G
cv2.goodFeaturesToTrack (2/2)

Cv2.goodFeaturesToTrack (2/2)

image/CV/low-level/cv2 G
cv2.goodFeaturesToTrackWithQuality

Cv2.goodFeaturesToTrackWithQuality

image/CV/low-level/cv2 G
cv2.grabCut

The classic CV answer to \u201ccut this thing out\u201d

image/CV/low-level/cv2 G
cv2.hasNonZero

Is there anything in this mask? cv2.hasNonZero, the cheapest branch in your graph

image/CV/low-level/cv2 H
cv2.HoughCircles

Cv2.HoughCircles for wheels, coins and dials

image/CV/low-level/cv2 H
cv2.HoughCirclesWithAccumulator

Circle detection with the confidence column attached

image/CV/low-level/cv2 H
cv2.HoughLines

Cv2.HoughLines (and why you probably want HoughLinesP)

image/CV/low-level/cv2 H
cv2.HoughLinesP

The Hough transform you actually want for drawing and counting

image/CV/low-level/cv2 H
cv2.HoughLinesPointSet

Fit a line through a pile of points, not a picture

image/CV/low-level/cv2 H
cv2.HoughLinesWithAccumulator

Line detection that tells you how sure it is

image/CV/low-level/cv2 H
cv2.HuMoments

Seven numbers that recognise a shape after you rotate it

image/CV/low-level/cv2 H
cv2.idct

Turning DCT coefficients back into an image

image/CV/low-level/cv2 I
cv2.idft

The inverse FFT, and the DFT_SCALE tick everyone forgets

image/CV/low-level/cv2 I
cv2.illuminationChange

Flatten a glare spot without repainting the whole frame

image/CV/low-level/cv2 I
cv2.imdecode

When the image arrives as bytes, not as a file

image/CV/low-level/cv2 I
cv2.img_hash.averageHash

The fastest way to ask \u201chas this image changed?\u201d

image/CV/low-level/img_hash
cv2.img_hash.blockMeanHash

Two hash lengths, one dropdown that changes everything

image/CV/low-level/img_hash
cv2.img_hash.colorMomentHash

The one hash that doesn\u2019t care about rotation

image/CV/low-level/img_hash
cv2.img_hash.marrHildrethHash

Hashing the edges, for when \u201cclose\u201d isn\u2019t close enough

image/CV/low-level/img_hash
cv2.img_hash.pHash

The perceptual hash you should reach for first

image/CV/low-level/img_hash
cv2.img_hash.radialVarianceHash

The hash that survives a rotation, and reads its score backwards

image/CV/low-level/img_hash
cv2.initInverseRectificationMap

The reverse lookup that gets you from the clean image back to your lens

image/CV/low-level/cv2 I
cv2.initUndistortRectifyMap

Build the lookup table once, fix the whole video with it

image/CV/low-level/cv2 I
cv2.inpaint

For dust, scratches and logos — the fix you should try before you spend a diffusion pass

image/CV/low-level/cv2 I
cv2.inRange

Turn 'keep pixels in this range' into a mask — and the hue-wrap trap that comes with it

image/CV/low-level/cv2 I
cv2.insertChannel

Gluing single channels back into a colour image (the pack does it in its own Wiener filter)

image/CV/low-level/cv2 I
cv2.integral

The summed-area table, or 'how to average a rectangle in constant time'

image/CV/low-level/cv2 I
cv2.integral2

Two summed-area tables, so local variance is also free

image/CV/low-level/cv2 I
cv2.integral3

Two tables and a tilted one — the node for Haar-feature archaeology

image/CV/low-level/cv2 I
cv2.intensity_transform.autoscaling

Stop guessing exposure numbers, let the frame set its own range

image/CV/low-level/intensity_transform
cv2.intensity_transform.BIMEF

The exposure fixer that raises an error on a stock install

image/CV/low-level/intensity_transform
cv2.intensity_transform.BIMEF2

Same Eigen wall as BIMEF, but this time you pick the exposure ratio

image/CV/low-level/intensity_transform
cv2.intensity_transform.contrastStretching

A tone curve you draw with two points

image/CV/low-level/intensity_transform
cv2.intensity_transform.gammaCorrection

The exposure knob that doesn't wash out your whites

image/CV/low-level/intensity_transform
cv2.intensity_transform.logTransform

One node, no settings, and a very strong opinion about shadows

image/CV/low-level/intensity_transform
cv2.intersectConvexConvex

How much do these two shapes actually overlap?

image/CV/low-level/cv2 I
cv2.invert

It inverts a matrix, not your image — and that trips up everyone who googles it

image/CV/low-level/cv2 I
cv2.invertAffineTransform

Going backwards through a warp without rebuilding the matrix by hand

image/CV/low-level/cv2 I
cv2.isContourConvex

The one-bit answer that stops your geometry nodes from lying to you

image/CV/low-level/cv2 I
cv2.kmeans

Palette, clusters and grouping — the workhorse the pack builds three subgraphs around

image/CV/low-level/cv2 K
cv2.Laplacian

The edge map that comes back pure black until you fix ddepth

image/CV/low-level/cv2 L
cv2.line

Draw on an IMAGE or MASK without leaving ComfyUI (and yes, that color is BGR)

image/CV/low-level/cv2 L
cv2.linemod.colormap

A debug visualiser for LINEMOD's quantised depth bins

image/CV/low-level/linemod
cv2.log

For HDR and spectra, not for slapping a 'log look' on 0-255 pixels

image/CV/low-level/cv2 L
cv2.LUT

The whole tone curve, for the price of one table lookup

image/CV/low-level/cv2 L
cv2.magnitude

Turning a Sobel pair into one gradient map

image/CV/low-level/cv2 M
cv2.Mahalanobis

The one node in this pack that isn't about images at all

image/CV/low-level/cv2 M
cv2.matchShapes

Shape similarity that ignores size, rotation and position — on purpose

image/CV/low-level/cv2 M
cv2.matchTemplate

You get a score map, not a match — and that's the point

image/CV/low-level/cv2 M
cv2.matMulDeriv

Jacobians of a matrix product, for the three people doing this by hand

image/CV/low-level/cv2 M
cv2.max

Per-pixel maximum, a.k.a. the Lighten blend mode (not the max of your image)

image/CV/low-level/cv2 M
cv2.mean

The fastest sanity check in the pack — and yes, those numbers are BGR

image/CV/low-level/cv2 M
cv2.meanShift

A mode-seeking search window, and the rectangle it lands on

image/CV/low-level/cv2 M
cv2.meanStdDev

The two numbers a colour-match pass is actually built from

image/CV/low-level/cv2 M
cv2.medianBlur

The salt-and-pepper killer, and the blur that doesn't smear your edges

image/CV/low-level/cv2 M
cv2.min

Per-pixel minimum, the Darken blend mode and your cheapest mask intersection

image/CV/low-level/cv2 M
cv2.minAreaRect

The rotated box that fits your contour, angle quirks included

image/CV/low-level/cv2 M
cv2.minEnclosingCircle

Centre and radius of the smallest circle around your points

image/CV/low-level/cv2 M
cv2.minEnclosingConvexPolygon

Fit exactly k corners around your points (OpenCV 5 only)

image/CV/low-level/cv2 M
cv2.minEnclosingTriangle

Three corners that contain everything, plus the area it cost

image/CV/low-level/cv2 M
cv2.minMaxLoc

Find the extreme pixel, then get its coordinates

image/CV/low-level/cv2 M
cv2.moments

24 numbers that describe a blob (and why the output isn't a list)

image/CV/low-level/cv2 M
cv2.morphologyEx

Open and close are the mask hygiene you keep forgetting

image/CV/low-level/cv2 M
cv2.motempl.calcGlobalOrientation

Which way is it moving, in degrees

image/CV/low-level/motempl
cv2.motempl.calcMotionGradient

Turn 'when' into 'which way'

image/CV/low-level/motempl
cv2.motempl.updateMotionHistory

An image that remembers when things moved

image/CV/low-level/motempl
cv2.mulSpectrums

Multiply in frequency space (this is how convolution gets fast)

image/CV/low-level/cv2 M
cv2.multiply

The scalar multiply you'll actually reach for

image/CV/low-level/cv2 M
cv2.mulTransposed

The Gram matrix in one node

image/CV/low-level/cv2 M
cv2.norm (1/2)

How big is this array, as one number

image/CV/low-level/cv2 N
cv2.norm (2/2)

The difference metric for two arrays

image/CV/low-level/cv2 N
cv2.normalize

Two different nodes wearing one name

image/CV/low-level/cv2 N
cv2.ocl.haveAmdBlas

Does your OpenCV have the AMD BLAS extension?

image/CV/low-level/ocl
cv2.ocl.haveAmdFft

The sibling of a node almost nobody needs

image/CV/low-level/ocl
cv2.ocl.haveOpenCL

One boolean about your OpenCV build

image/CV/low-level/ocl
cv2.ocl.useOpenCL

Is OpenCL switched on, not just available?

image/CV/low-level/ocl
cv2.omnidir.initUndistortRectifyMap

Rectify a fisheye without the edge-pinching

image/CV/low-level/omnidir
cv2.omnidir.projectPoints

Check your fisheye calibration by projecting into it

image/CV/low-level/omnidir
cv2.omnidir.stereoReconstruct

Fisheye pair in, 3D point cloud out

image/CV/low-level/omnidir
cv2.omnidir.stereoRectify

Two inputs, two outputs, and an honest caveat

image/CV/low-level/omnidir
cv2.omnidir.undistortImage

Flatten a 360 mirror-rig frame into something you can actually look at

image/CV/low-level/omnidir
cv2.omnidir.undistortPoints

The raw wrapper exists, and it's still not the node you want

image/CV/low-level/omnidir
cv2.optflow.calcOpticalFlowSF (1/2)

Dense motion between two frames, with only five knobs

image/CV/low-level/optflow
cv2.optflow.calcOpticalFlowSF (2/2)

The same SimpleFlow, now with all fifteen knobs

image/CV/low-level/optflow
cv2.optflow.calcOpticalFlowSparseToDense

Track a few hundred points, get a full motion field

image/CV/low-level/optflow
cv2.parallel.setParallelForBackend

A threading knob, not an image node

image/CV/low-level/parallel
cv2.patchNaNs

The one-line fix for the NaN that just ate your depth map

image/CV/low-level/cv2 P
cv2.PCABackProject

Rebuild the original data from its principal components

image/CV/low-level/cv2 P
cv2.PCACompute (1/2)

Find the axes your data actually lies along

image/CV/low-level/cv2 P
cv2.PCACompute (2/2)

Keep 99% of the variance instead of counting components

image/CV/low-level/cv2 P
cv2.PCACompute2 (1/2)

PCA with the eigenvalues attached

image/CV/low-level/cv2 P
cv2.PCACompute2 (2/2)

Eigenvalues, and let the variance pick the component count

image/CV/low-level/cv2 P
cv2.PCAProject

Turn your data into its principal components

image/CV/low-level/cv2 P
cv2.pencilSketch

Line-art and colour-pencil looks in one deterministic node

image/CV/low-level/cv2 P
cv2.perspectiveTransform

Push points through a homography instead of resampling an image

image/CV/low-level/cv2 P
cv2.phase

The angle of a vector field, when you only have the components

image/CV/low-level/cv2 P
cv2.phaseCorrelate

Sub-pixel shift between two frames, in one FFT

image/CV/low-level/cv2 P
cv2.phaseCorrelateIterative

OpenCV 5's beefed-up version, with no confidence score

image/CV/low-level/cv2 P
cv2.pointPolygonTest

Is this point inside my shape, and by how much

image/CV/low-level/cv2 P
cv2.polarToCart

Angle plus magnitude, back into x and y

image/CV/low-level/cv2 P
cv2.pow

Cv2.pow is your gamma curve — and the uint8 clipping that comes with it

image/CV/low-level/cv2 P
cv2.ppf_match_3d.addNoisePC

Stress-test your PPF pose before the scan does it for you

image/CV/low-level/ppf_match_3d
cv2.ppf_match_3d.loadPLYSimple

The pack's one node that asks you to type a file path

image/CV/low-level/ppf_match_3d
cv2.preCornerDetect

A corner map, not corners — and the ksize that must not be 0

image/CV/low-level/cv2 P
cv2.projectPoints

Put a 3D point where the camera would see it

image/CV/low-level/cv2 P
cv2.projectPointsSepJ

Same projection, seven outputs, one shrug from the docs

image/CV/low-level/cv2 P
cv2.PSNR

One number for 'how close are these two images', and how to read it

image/CV/low-level/cv2 P
cv2.putText

Burn text into a frame — and the two defaults that make it invisible

image/CV/low-level/cv2 P
cv2.pyrDown

The half-size step you build pyramids with, not the resizer you want

image/CV/low-level/cv2 P
cv2.pyrMeanShiftFiltering

The flatten-everything filter, and the one input that makes it slow

image/CV/low-level/cv2 P
cv2.pyrUp

It doubles the pixels, it does not sharpen the image

image/CV/low-level/cv2 P
cv2.randn

Gaussian noise you can actually reproduce — if you seed it right

image/CV/low-level/cv2 R
cv2.randShuffle

Shuffle a list of points or indices, not a picture

image/CV/low-level/cv2 R
cv2.randu

Uniform noise and random test fields, bounded by two array inputs

image/CV/low-level/cv2 R
cv2.rapid.convertCorrespondencies

Turning matched search lines into points you can solve a pose with

image/CV/low-level/rapid
cv2.rapid.drawCorrespondencies

The debug picture that tells you why your pose refinement failed

image/CV/low-level/rapid
cv2.rapid.drawSearchLines

See the lines RAPID is looking along — and why it found nothing

image/CV/low-level/rapid
cv2.rapid.drawWireframe

Project your mesh into the frame and see if the pose is a lie

image/CV/low-level/rapid
cv2.rapid.extractControlPoints

Where RAPID's silhouette samples come from

image/CV/low-level/rapid
cv2.rapid.extractLineBundle

The strip of pixels RAPID searches along, as an array

image/CV/low-level/rapid
cv2.rapid.findCorrespondencies

The edge-search step nobody can spell

image/CV/low-level/rapid
cv2.rapid.rapid

One pose-refinement step of OpenCV's model tracker

image/CV/low-level/rapid
cv2.recoverPose (1/4)

Relative camera pose from two calibrated views

image/CV/low-level/cv2 R
cv2.recoverPose (2/4)

Decompose an essential matrix you already have

image/CV/low-level/cv2 R
cv2.recoverPose (3/4)

The uncalibrated shortcut, and when it lies to you

image/CV/low-level/cv2 R
cv2.recoverPose (4/4)

The overload that triangulates while it decomposes

image/CV/low-level/cv2 R
cv2.rectangle (1/2)

Draw a box from two corners, in the right colour order

image/CV/low-level/cv2 R
cv2.rectangle (2/2)

X, y, width, height — the variant detectors actually give you

image/CV/low-level/cv2 R
cv2.rectangleIntersectionArea

Two rectangles, one number

image/CV/low-level/cv2 R
cv2.reduce

Collapse a matrix to a row or a column (and don't overflow it)

image/CV/low-level/cv2 R
cv2.reduceArgMax

Which column is the brightest one?

image/CV/low-level/cv2 R
cv2.reduceArgMin

The same trick, for the darkest line

image/CV/low-level/cv2 R
cv2.registerDepth

Put the depth sensor's map on the RGB camera's grid

image/CV/low-level/cv2 R
cv2.remap

The one warp behind undistortion, rectification and every map node

image/CV/low-level/cv2 R
cv2.repeat

Tile an array — the cheapest node in a point-cloud pipeline

image/CV/low-level/cv2 R
cv2.reprojectImageTo3D

Turn disparities into an XYZ map you can actually use

image/CV/low-level/cv2 R
cv2.rescaleDepth

Millimetres to metres, and why your depth PNG lies

image/CV/low-level/cv2 R
cv2.resize

Dsize, fx/fy, and the one interpolation choice that matters

image/CV/low-level/cv2 R
cv2.Rodrigues

Rvec to matrix and back, the conversion everything else assumes

image/CV/low-level/cv2 R
cv2.rotate

The only warp that doesn't resample anything

image/CV/low-level/cv2 R
cv2.rotatedRectangleIntersection

Did Those Two Tilted Boxes Actually Overlap?

image/CV/low-level/cv2 R
cv2.sampsonDistance

The QA Number That Tells You Your Matches Are Rubbish

image/CV/low-level/cv2 S
cv2.scaleAdd

Alpha×A + B, and Why the Default alpha of 0 Looks Broken

image/CV/low-level/cv2 S
cv2.Scharr

The 3×3 Gradient That Doesn't Lie About Edge Angles

image/CV/low-level/cv2 S
cv2.seamlessClone

Kill the Seam on Your Composite Without Touching a Model

image/CV/low-level/cv2 S
cv2.sepFilter2D

Blur and Sharpen for O(k) Instead of O(k²)

image/CV/low-level/cv2 S
cv2.setIdentity

The Neutral Matrix Your Math Chain Starts From

image/CV/low-level/cv2 S
cv2.signal.resampleSignal

Rate-Converting a Signal Inside a ComfyUI Graph

image/CV/low-level/signal
cv2.Sobel

Finite Differences Done Right (and the ddepth Setting Everyone Gets Wrong)

image/CV/low-level/cv2 S
cv2.solve

Solving Ax = B Inside Your ComfyUI Graph

image/CV/low-level/cv2 S
cv2.solveCubic

Real Roots of a Cubic, in Closed Form

image/CV/low-level/cv2 S
cv2.solveLP (1/2)

A Real Simplex Solver, Hiding in Your Node Menu

image/CV/low-level/cv2 S
cv2.solveLP (2/2)

The Same LP Without the Tolerance Knob

image/CV/low-level/cv2 S
cv2.solvePnP

Where Is That Object, Actually? (Pose From Points)

image/CV/low-level/cv2 S
cv2.solvePnPRansac

Pose Estimation That Survives Your Bad Matches

image/CV/low-level/cv2 S
cv2.solvePnPRefineLM

Polish a Pose You Already Roughly Have

image/CV/low-level/cv2 S
cv2.solvePnPRefineVVS

Pose Refinement With a Gain Knob

image/CV/low-level/cv2 S
cv2.solvePoly

Real Roots of a Polynomial of Any Degree

image/CV/low-level/cv2 S
cv2.sort

Ordering Rows and Columns Without Leaving the Graph

image/CV/low-level/cv2 S
cv2.sortIdx

Rank Things Without Losing Track of Which Is Which

image/CV/low-level/cv2 S
cv2.spatialGradient

Both derivatives in one call, and why your preview is black

image/CV/low-level/cv2 S
cv2.sqrBoxFilter

Local energy in a box, and the depth setting that ruins it

image/CV/low-level/cv2 S
cv2.sqrt

Cv2.sqrt is a gamma curve in disguise — and a quantizer if you feed it an IMAGE

image/CV/low-level/cv2 S
cv2.stackBlur

Gaussian-looking blur at box-blur speed (and it eats LATENTs)

image/CV/low-level/cv2 S
cv2.stereoRectify

The step between a calibrated stereo pair and a depth map

image/CV/low-level/cv2 S
cv2.stereoRectifyUncalibrated

Rectifying a stereo pair you never calibrated

image/CV/low-level/cv2 S
cv2.stylization

The painterly filter that runs in milliseconds and needs no model

image/CV/low-level/cv2 S
cv2.subtract

Saturated difference, and the one version that won't wrap around on you

image/CV/low-level/cv2 S
cv2.sumElems

Sum every pixel, get back a Scalar you can actually reuse

image/CV/low-level/cv2 S
cv2.SVBackSubst

The solve step that turns an SVD into an answer

image/CV/low-level/cv2 S
cv2.SVDecomp

The singular values are the interesting part

image/CV/low-level/cv2 S
cv2.textureFlattening

Keep the edges, delete the texture

image/CV/low-level/cv2 T
cv2.threshold

The one node that turns an image into a decision

image/CV/low-level/cv2 T
cv2.thresholdWithMask

Threshold only inside the region you care about

image/CV/low-level/cv2 T
cv2.trace

One number that tells you if your matrix is sane

image/CV/low-level/cv2 T
cv2.transform

Not a warp, a channel mixer — and the name fools everybody

image/CV/low-level/cv2 T
cv2.transpose

A mirror across the diagonal, not the 90° rotation you meant

image/CV/low-level/cv2 T
cv2.triangulatePoints

Two views in, 3D points out (and a 4-row array you have to divide)

image/CV/low-level/cv2 T
cv2.undistort

Straighten the lens, and remember it doesn't crop for you

image/CV/low-level/cv2 U
cv2.undistortImagePoints

Fix the coordinates, keep the pixels

image/CV/low-level/cv2 U
cv2.undistortPoints

Fix lens distortion when you only have points, not pixels

image/CV/low-level/cv2 U
cv2.useOptimized

The ComfyUI node that answers one question and does nothing else

image/CV/low-level/cv2 U
cv2.validateDisparity

The left-right check SGBM runs inside itself, exposed for your own maps

image/CV/low-level/cv2 V
cv2.warpAffine

Rotate, scale and shear — and yes, you can warp a latent

image/CV/low-level/cv2 W
cv2.warpFrame

Reproject an RGB-D frame through a rigid camera move (OpenCV 5's deep end)

image/CV/low-level/cv2 W
cv2.warpPerspective

The homography node, and what it's actually good at

image/CV/low-level/cv2 W
cv2.warpPolar

Unwrap a circle into a straight line (and why that's useful)

image/CV/low-level/cv2 W
cv2.watershed

Separating blobs that are touching

image/CV/low-level/cv2 W
cv2.ximgproc.amFilter

The guided smoother that uses a second image as its opinion

image/CV/low-level/ximgproc
cv2.ximgproc.anisotropicDiffusion

The one node in this pack the author tells you not to use

image/CV/low-level/ximgproc
cv2.ximgproc.bilateralTextureFilter

Smooth the texture, keep the shape

image/CV/low-level/ximgproc
cv2.ximgproc.colorMatchTemplate

Template matching that doesn't throw away the colour

image/CV/low-level/ximgproc
cv2.ximgproc.computeBadPixelPercent

Put a number on how wrong your depth map is

image/CV/low-level/ximgproc
cv2.ximgproc.computeMSE

Two disparity maps, one number

image/CV/low-level/ximgproc
cv2.ximgproc.contourSampling

Turn an edge map into a fixed number of points

image/CV/low-level/ximgproc
cv2.ximgproc.covarianceEstimation

A local covariance map, for people who need one

image/CV/low-level/ximgproc
cv2.ximgproc.createQuaternionImage

The doorway into colour Fourier, which almost nobody walks through

image/CV/low-level/ximgproc
cv2.ximgproc.dtFilter

Edge-preserving smoothing that doesn't care how big sigma is

image/CV/low-level/ximgproc
cv2.ximgproc.edgePreservingFilter

Two nodes share this name and they are not the same algorithm

image/CV/low-level/ximgproc
cv2.ximgproc.fastBilateralSolverFilter

The node that always raises an error, and why

image/CV/low-level/ximgproc
cv2.ximgproc.fastGlobalSmootherFilter

Flatten a photo without wrecking its edges

image/CV/low-level/ximgproc
cv2.ximgproc.FastHoughTransform

FastHoughTransform gives you an accumulator, not lines — here's what to do with it

image/CV/low-level/ximgproc
cv2.ximgproc.findEllipses

Detect circles that aren't quite circles

image/CV/low-level/ximgproc
cv2.ximgproc.fourierDescriptor

Compare shapes that are rotated, rescaled or just drawn sloppier

image/CV/low-level/ximgproc
cv2.ximgproc.getDisparityVis

Making a stereo disparity map actually viewable

image/CV/low-level/ximgproc
cv2.ximgproc.GradientDericheX

An edge detector that doesn't get slower when you smooth more

image/CV/low-level/ximgproc
cv2.ximgproc.GradientDericheY

The vertical half of the Deriche gradient pair

image/CV/low-level/ximgproc
cv2.ximgproc.guidedFilter

The mask-feathering tool you already have, with the real parameters

image/CV/low-level/ximgproc
cv2.ximgproc.jointBilateralFilter

Denoise one image using another image's edges

image/CV/low-level/ximgproc
cv2.ximgproc.l0Smooth

For when you want flat regions with genuinely sharp edges

image/CV/low-level/ximgproc
cv2.ximgproc.niBlackThreshold

The threshold that survives a badly lit photo

image/CV/low-level/ximgproc
cv2.ximgproc.PeiLinNormalization

The 'make this shape canonical' maths node

image/CV/low-level/ximgproc
cv2.ximgproc.qconj

The quaternion conjugate, i.e. how you turn a multiply into a match

image/CV/low-level/ximgproc
cv2.ximgproc.qdft

A Fourier transform for colour images that actually treats colour as one thing

image/CV/low-level/ximgproc
cv2.ximgproc.qmultiply

The quaternion product, which is how you convolve a colour image

image/CV/low-level/ximgproc
cv2.ximgproc.qunitary

Keep the phase, throw away the magnitude (in colour)

image/CV/low-level/ximgproc
cv2.ximgproc.RadonTransform

Find how far a scan is tilting, without guessing angles

image/CV/low-level/ximgproc
cv2.ximgproc.rollingGuidanceFilter

Smoothing that knows what size of detail it's removing

image/CV/low-level/ximgproc
cv2.ximgproc.thinning

Turn a fat blob mask into a one-pixel skeleton

image/CV/low-level/ximgproc
cv2.ximgproc.transformFD

Rotate and rescale a silhouette using Fourier descriptors

image/CV/low-level/ximgproc
cv2.ximgproc.weightedMedianFilter

The denoiser that won't eat your edges — if you feed it a guide

image/CV/low-level/ximgproc
cv2.xphoto.applyChannelGains

ApplyChannelGains ships with the gains at 0 — i.e. it hands you a black image

image/CV/low-level/xphoto
cv2.xphoto.dctDenoising

It wants to know how noisy your image is, and it means it

image/CV/low-level/xphoto
cv2.xphoto.inpaint

Read the mask twice, it's the opposite of cv2.inpaint

image/CV/low-level/xphoto
cv2.xphoto.oilPainting (1/2)

The overload where you pick the colour space the brush mixes in

image/CV/low-level/xphoto
cv2.xphoto.oilPainting (2/2)

The same brush, one fewer knob — here's when to pick it

image/CV/low-level/xphoto
CV Find Absent Color (Lab)

Pick an annotation colour that can't hide in the picture

image/CV
CV Affine Shape Warp

The rigid fit that tells you when rigid was the wrong answer

image/CV/features
CV Align MTB

The first thing every hand-held exposure bracket needs

image/CV/hdr
CV Align MTB To Reference

When you don't want the frames negotiating with each other

image/CV/hdr
CV Annotate Correspondences

Drag two images into alignment and get the warp for free

image/CV/points
CV Annotate Points On Model

Click anchors onto a 3D model, in its own coordinate frame

image/CV/low-level
CV Annotate Points

Click a seed, get a mask — the node most graphs secretly need

image/CV/points
* → CV Array

The one-wire bridge into 470 low-level OpenCV functions

image/CV/low-level
CV Apply Chromatic Aberration

Add the lens defect that makes a render look photographed

image/CV
CV Apply Color Correction

The other half of the CCM pair — and the easy half

image/CV/ccm
CV Array Statistic

How to find the motion that isn't the moving thing

image/CV/low-level
CV Array To BBoxes

How a numpy table becomes something ComfyUI can crop

image/CV
CV Array To Numbers

The bridge that turns one array into fifty graph executions

image/CV/low-level
CV Array To Text

Get your measurements out of the graph and into a file

image/CV/low-level
CV ArUco Board Image

Generating an ArUco / ChArUco target in ComfyUI

image/CV/features
CV ArUco Board Pose (Average)

CV ArUco Board Pose (Average)

image/CV/features
CV ArUco Detect Markers

ArUco detection in one node — and the one setting that makes it return nothing

image/CV/features
CV ArUco Draw Markers

Drawing detected ArUco markers

image/CV/features
CV Background Model (Update)

One frame, one node, no hidden state

image/CV/segmentation
CV Background Subtract (Batch)

Pull a subject out of static-camera footage without a segmentation model

image/CV/contrib
CV Barcode Detect

EAN and UPC decoding in ComfyUI — yes, it reads the curved label on a bottle

image/CV/codes
CV BBoxes To Array

Reading BOUNDING_BOX data as plain arrays

image/CV
CV BBoxes to Masks

Turning boxes into masks (and knowing when not to)

image/CV
CV Box IoU Matrix

The overlap matrix that scores and matches detections

image/CV
CV Build Information

\"Does my OpenCV even have that?\" — asking your build instead of guessing

image/CV/low-level
CV Back Project

Back-projection, and why it powers CamShift

image/CV/segmentation
CV Histogram

Histogram anything in a ComfyUI graph — including just the part you painted

image/CV/segmentation
CV Calibrate Camera (Chessboard)

Get real intrinsics, not a guessed focal length

image/CV/features
CV Calibrate Camera (ChArUco)

The case where a half-visible board still counts

image/CV/features
CV Calibrate Camera (Circle Grid)

The target OpenCV actually recommends for wide lenses

image/CV/features
CV Camera Matrix

Building a camera matrix by hand

image/CV/low-level
CV Camera Pose To 3D View

LOAD3D_CAMERA from a calibration

image/CV/low-level
CV Cascade Detect

Why the old Haar detector is still in the box

image/CV/ml
CV Cast Array

The cast you need before OpenCV will do arithmetic on your arrays

image/CV/low-level
CV Chart Matrix

A similarity matrix rendered as a five-pixel image is useless — CV Chart Matrix fixes that

image/CV/plots
CV Chart Scatter

CV Chart Scatter for k-means centres and feature vectors

image/CV/plots
CV Chart Series

One score per detected face? CV Chart Series is the chart the numbers always needed

image/CV/plots
CV ChArUco Detect

The calibration board that still works when half of it is off-frame

image/CV/features
CV Chessboard Flags

CV Chessboard Flags — stop retyping 512+32 into six different detector nodes

image/CV/low-level
CV Chromatic Aberration Correction

Real lateral-CA fixes need a calibration file, and it has to exist

image/CV
CV Class Scores Decode

Turning a raw score vector into 'top-1: golden retriever'

image/CV/dnn
CV Color From Hex

The colour picker that talks to cv2's BGR draw calls

image/CV/low-level
CV Colorize Model

2016 colorization, still the fun kind of wrong

image/CV/dnn
Colorize Superpixels (FLANN)

Steal the palette from a reference image

image/CV/colorize
CV Color Map

Make a depth map or a score map actually readable

image/CV
CV Color Range

InRange with a hue that knows it wraps at 179

image/CV/segmentation
CV Color Range From Sample

Scribble on the colour, let the node work out the numbers

image/CV/segmentation
CV Components Touching Border

The sky is whatever runs off the edge of the frame

image/CV/contours
CV Compose Pose (Trajectory)

Chaining camera poses into a trajectory, with one number monocular vision can't give you

image/CV/features
CV Compute Descriptors

FAST corners described by SIFT, because OpenCV splits the two

image/CV/features
CV Concat Arrays

The join that gives you cv2.merge back

image/CV/low-level
CV Connected Components (Split Mask)

One mask in, one mask per blob out

image/CV
CV Constant Like

The all-white mask you warp alongside the image

image/CV/features
CV Contour To Points

Get a contour out of Contour Land and into cv2's geometry functions

image/CV/contours
CV Contrast (CLAHE/Equalize)

The contrast fix that doesn't hallucinate

image/CV
CV Convert Axis Convention (3D)

The axis flip that quietly mirrors your 3D scene

image/CV/low-level
CV Coordinate Grid

See what your classifier actually thinks

image/CV/ml
Create CA Calibration

Synthesize a chromatic-aberration profile on purpose

image/CV
CV Create CCM Model

You can't fix colour by eye — fit a 3×3 matrix instead

image/CV/ccm
CV Crop by BBoxes

40 regions, one node, and a lossless paste back

image/CV
CV Crop by Masks

Mask in, context-padded crops out

image/CV
CV Array Shape

Stop guessing what a cv2 node just handed you

image/CV/low-level
CV Batch → Image Batch

B frames out of a cv2 loop? Here's the way back onto the canvas

image/CV/low-level
CV DType

The one-string node that kills 'wrong dtype' errors

image/CV/low-level
Inspect CV Data

The debugger for a graph that has no printf

image/CV/low-level
Preview CV Array

See the array, including the NaN pixels

image/CV/low-level
CV Roll (FFT Shift)

The quadrant swap everyone forgets

image/CV/low-level
CV Array Size

One wire for (width, height), no more swapped resizes

image/CV/features
CV Array → Image

Getting cv2 output back onto the canvas

image/CV/low-level
CV Array → Latent

Pushing a cv2 array back into the sampler's world

image/CV/low-level
CV Array → Mask

Turning raw array data into something ComfyUI can mask with

image/CV/low-level
CV Cylinder Map

The pre-warp that makes panoramas line up

image/CV/remap
CV DCT Flags

Author the bitmask once, feed every transform

image/CV/low-level
CV Decompose Homography

Getting camera motion out of a homography

image/CV/features
CV Decompose Projection Matrix (RQ)

You have a camera matrix — here's how to get intrinsics and rotation back out

image/CV/features
CV Deep Features

Freeze any ONNX backbone and turn it into a feature extractor

image/CV/ml
CV Delaunay / Voronoi

Scattered points in, mesh out — Delaunay and its Voronoi dual in one node

image/CV/points
CV Depth to 3D Points

The two lines of math, and the unit trap

image/CV/low-level
CV Detect Blobs

The shape filters that threshold + findContours can't give you

image/CV/features
CV Detect Circle Grid

Easier to detect than chessboards, if you set the flag right

image/CV/features
CV Detect Color Checker

The first step to a real color-correction matrix

image/CV/ccm
CV Detect Corners

Picking corner detectors that hand you keypoints, not bare points

image/CV/features
CV Detect Features

ORB, SIFT, AKAZE or BRISK — detect and describe in one node

image/CV/features
CV Detect Lines (Hough)

Canny, votes, and a drawing on the way out

image/CV
CV Detect Line Segments (LSD)

Straight segments with subpixel endpoints and no threshold to tune

image/CV/features
CV Detect MSER Regions

Threshold-free region proposals that survive bad lighting

image/CV/contours
CV DFT Flags

One flags node, many DFT calls — and the one OpenCV scaling trap it fixes

image/CV/low-level
CV Disparity Filter (WLS)

Fills the holes without dragging your edges

image/CV/contrib
CV Disparity Interpolate (Edge-Aware)

Making a holey disparity map dense — with planes, not smears

image/CV/contrib
CV Displacement Map

Heat haze, glass, and wobble from any image's brightness

image/CV/remap
CV DNN Blob From Image

The preprocessing step every ONNX model needs and nobody documents

image/CV/dnn
CV DNN Forward

Load an ONNX model and run it, in one node

image/CV/dnn
CV DNN Forward All

Every output at once, and how to drive a two-frame model

image/CV/dnn
CV DNN Images From Blob

Turning a network's output tensor back into pictures

image/CV/dnn
CV DNN Letterbox

The boring resize that your YOLO graph silently depends on

image/CV/dnn
CV DNN Mask Output

Turning a segmentation blob into an actual ComfyUI MASK

image/CV/dnn
CV DNN Pick Output

Getting the right tensor out of a multi-output ONNX model

image/CV/dnn
CV DNN Tokenizer

See what your prompt turns into before the model does

image/CV/dnn
CV Downsample Point Cloud

Cut the cloud before the maths gets quadratic

image/CV/points
CV Draw Circles

The debug overlay that plugs straight into HoughCircles

image/CV/points
CV Draw Connections

Draw the skeleton, not just the joints

image/CV/points
CV Draw Contours

Make Find Contours stop lying to you

image/CV/contours
CV Draw Ellipses

Because straight-line fitting lies about round things

image/CV/points
CV Draw Epipolar Lines

Seeing whether your fundamental matrix is actually right

image/CV/features
CV Draw Flow Grid

The quiver plot for dense optical flow

image/CV/features
CV Draw Flow Vectors

Arrows between two point sets, the honest way to check tracking

image/CV/points
CV Draw Keypoints

The two-line sanity check for any feature detector

image/CV/features
CV Draw Labels

Name your keypoints so debugging isn't a guessing game

image/CV/points
CV Draw Matches

The RANSAC inlier picture that tells you if your homography is real

image/CV/features
CV Draw Path (ordered)

Showing which end a trajectory started from

image/CV/points
CV Draw Plot Frame

Axes under your trajectory, so 3 metres doesn't look like 300

image/CV/points
CV Draw Points

Markers, cluster colours, and why shape beats hue

image/CV/points
CV Draw Polygon

Outlines, filled quads, and masks from rotated boxes

image/CV/features
CV Draw Rays

Bearings out of a shared origin, drawn over the evidence

image/CV/points
CV Draw Segments

Actually see the lines Hough found

image/CV/points
CV Draw Text

Burn the number into the picture

image/CV/features
CV EAST Text Detect

Find the text in a photo, boxes not letters

image/CV/dnn
CV Edge Drawing

Edges that are already chains, plus the ellipses nothing else finds

image/CV/contrib
CV Embedding Match

Who is this face, and how sure are you?

image/CV/dnn
CV Enclosing Circle

Get a dial's centre in one node

image/CV/contours
CV Eye

The identity matrix, i.e. the do-nothing transform

image/CV/features
CV Detect Line Segments (FLD)

The line detector that can merge its own pieces

image/CV/contrib
CV Feather Blend

Kill the seam where two warped images meet

image/CV/features
CV Feature Extract (Model)

DISK and SuperPoint keypoints inside ComfyUI

image/CV/dnn
CV Fill Holes

Turn a ring into a disk before you erode it

image/CV/contours
CV Filter Contours

Keep the round ones, throw away the squiggles

image/CV/contours
CV Filter Contours By Shape

Matching a template, and the mirroring trap nobody warns you about

image/CV/contours
CV Filter Keypoints

Stop letting tiny details poison your matches

image/CV/features
CV Filter Point Cloud

Pruning the depth points that ruin your view

image/CV/low-level
CV Filter Points 3D By Mask

Keep only the points a second view agrees with

image/CV/points
CV Filter Points By Distance

Keep the ticks in the band, not the noise

image/CV/points
CV Filter Points By Mask

Throw out the matches RANSAC didn't believe

image/CV/points
CV Find Contours

The fork in the road for every vision pipeline

image/CV/contours
CV Find Fundamental Matrix

Two views, one matrix, and a found flag you must read

image/CV/features
CV Find Homography (RANSAC)

Teach two photos that they're the same wall

image/CV/features
CV Find Quadrilateral

The four corners of your document, without a model

image/CV/contours
CV Find Transform (ECC)

Align two frames by intensity, no keypoints required

image/CV/features
CV Fisheye Calibrate (Chessboard)

The chessboard fit that a pinhole model gets wrong

image/CV/features
CV Fisheye Undistort

Straighten the wide lens, and pick your framing

image/CV/features
CV Fit Points To Box

Turn metres into pixels without lying about the scale

image/CV/points
CV Flip Axis (3D)

One minus sign, and a mirrored point cloud

image/CV/low-level
CV FloodFill Flags

Stop hand-OR-ing bit values into cv2.floodFill

image/CV/low-level
CV Flow Map

Warp an image along its own motion (the honest way to interpolate)

image/CV/remap
CV Flow To Color

Look at your vector field without lying to yourself

image/CV/features
CV GEMM Flags

The three transpose bits nobody wants to type as integers

image/CV/low-level
CV Generalized Hough (Shape Template)

Find any shape you can draw, even half-hidden

image/CV/features
CV Get CCM Loss

The number that tells you if your colour fit is any good

image/CV/ccm
CV Get CCM Matrix

Pull the colour matrix out of a fitted model

image/CV/ccm
CV GrabCut

Cut a subject out with a hint and no model download

image/CV/segmentation
CV Grid Points

The object points solvePnP needs and you can't type

image/CV/low-level
CV HDR Exposure Fusion (Mertens)

The HDR look without the exposure times

image/CV/hdr
CV HDR Merge to Radiance

Real linear light, not a displayable image

image/CV/hdr
CV HDR Tonemap

Four operators, one radiance map, no guessing

image/CV/hdr
CV HFS Segmentation (hierarchical feature selection)

Superpixel regions with no model and no GPU

image/CV/contrib
CV HOG Features

81 numbers per image, and a classifier you can actually train

image/CV/ml
CV Homography Map

Perspective as one entry in a longer distortion chain

image/CV/remap
CV ICP Register (Point Clouds)

Point-cloud alignment that will lie to you about how well it did

image/CV/contrib
CV Identity Map

The blank sheet every remap chain starts from

image/CV/remap
Image Batch → CV Batch

Run OpenCV on a whole clip instead of per-frame

image/CV/low-level
CV Image Corners

Four points that let you move a frame's outline somewhere else

image/CV/features
CV Image Hash Compare

Is this the same picture, or just a similar one?

image/CV/contrib
CV Image Moments

Measuring a shape by how bright it is, not just its outline

image/CV/moments
CV Quality Compare (cv2.quality)

Stop eyeballing your upscaler A/B tests

image/CV/quality
Image → CV Array

The adapter every OpenCV node in ComfyUI needs

image/CV/low-level
CV Index Batch

Get one frame out of a stack, without it ever erroring

image/CV/low-level
CV Install Example Inputs

The one node to press before anything else in the pack

image/CV
CV Kalman Filter Step

The node that keeps tracking after the detector gives up

image/CV/features
CV Keep Largest Component

One blob, everything else gone

image/CV/contours
CV Labels to Masks (full size)

Turn a label map into masks ComfyUI understands

image/CV
Latent → CV Array

Poking around inside the latent before it becomes pixels

image/CV/low-level
CV LLM Generate

A local LLM running through cv2.dnn, on purpose

image/CV/dnn
CV Load Camera Params (JSON)

Calibrate once, reuse those numbers forever

image/CV/low-level
CV Load Labels

So your detections say 'dog' instead of '16'

image/CV/dnn
CV Local Linear Fit (per pixel)

A regression at every pixel, and the matte that falls out of it

image/CV
CV Masks to BBoxes

The missing link between a mask and every crop node

image/CV
Mask → CV Array

Get your mask out of ComfyUI's type system and into numpy

image/CV/low-level
CV Match Features

Pairing two images' keypoints, and the ratio test that makes it work

image/CV/features
CV Match Features (Model)

LightGlue matching in ComfyUI, plus the normalization nobody tells you about

image/CV/dnn
CV Match Image Moments

Shape matching that can tell two shaded discs apart

image/CV/moments
CV Match Template Multi-Scale

Template matching that survives the object being a different size

image/CV
CV Matrix Multiply

The boring node that makes homography chains work

image/CV/features
CV Matrix To Pose

Turn a 4x4 back into something that can be rendered

image/CV/features
CV Merge Contours

Put a broken outline back together

image/CV/contours
CV Merge Point Clouds

Two scans in, one mesh out (if they're in the same frame)

image/CV/points
CV Mesh From 3D Model

Get vertices and triangles out of a GLB so OpenCV can use them

image/CV/low-level
CV Mesh Split Long Edges

The mesh tweak that stops cv2.rapid from drifting

image/CV/low-level
CV Mesh Vertex Normals

The 180° fix for PPF and ICP

image/CV/low-level
CV Mosaic (RGB -> Bayer CFA)

Make your own RAW file, because you can't download one

image/CV/low-level
CV MediaPipe Hand Pose

21 keypoints per hand, straight into your graph

image/CV/dnn
CV MediaPipe Palm Detect

Hand detection that runs through OpenCV's DNN module

image/CV/dnn
CV NMS Boxes

De-duplicate boxes from anything, not just YOLO

image/CV
CV Numbers To Array

Get a list of floats back into numpy

image/CV/low-level
CV 3D Object Transform

Place a model once, in the viewer and the tracker both

image/CV/low-level
CV Omnidir Calibrate (Chessboard)

Camera calibration for lenses past 180 degrees

image/CV/features
CV Omnidir Stereo Reconstruct

Two mirror-ball photos in, a point cloud out — the whole omnidirectional depth pipeline in one node

image/CV/features
CV Omnidir Undistort

A 360 mirror shot isn't a photo until you pick a projection

image/CV/features
CV Optical Flow Flags

Set your optical-flow flags once, then fan them out to every flow node in the graph

image/CV/low-level
CV Optical Flow (DeepFlow / PCAFlow)

The two dense-flow methods with no knobs and a real niche

image/CV/contrib
CV Optical Flow (DIS)

DIS is the dense-flow node you should reach for first

image/CV/features
CV Optical Flow (Farneback)

Farneback flow, and why the raw cv2 wrapper for it is unusable

image/CV/features
CV Optical Flow (RLOF, Dense)

RLOF is the optical-flow node that survives an exposure change

image/CV/contrib
CV Optical Flow (TV-L1)

The accuracy reference for optical flow, priced in seconds per megapixel

image/CV/contrib
CV Overlay Masks

See your masks before you trust them — color every one differently, in one node

image/CV
Parse Matrix

Paste a table, get an array — the return leg of 'CV Array To Text'

image/CV/low-level
CV Parse Object Transform

You parked the model by hand — now get that placement into the graph as data

image/CV/low-level
CV Paste by BBox

Put the crops back where they came from — no policy, no fuss

image/CV
CV Paste Through Warp

Put THIS picture THERE — correspondence-driven warping and compositing

image/CV/features
CV Permute Axes

HWC to CHW without writing numpy in your head

image/CV/low-level
CV Phase Correlate (Translation)

Sub-pixel shift in one FFT — the laziest good registration there is

image/CV/features
CV Photometric Align (Gain/Bias)

Match exposure between two shots — and get a free 'nothing changed here' mask

image/CV
CV Pick Value (sorted)

Pull one number out of an array — 'the angle of the hand with the largest radius'

image/CV/points
CV Pinch/Stretch Map

Pinch and stretch a frame without a lens — a border-anchored remap, per axis

image/CV/remap
CV Plot 2D (cv2.plot)

Turn a column of numbers into an image you can actually save

image/CV/plots
CV Point Cloud Nearest Distance

Did your registration actually work? Median nearest distance is the honest answer

image/CV/points
CV Point Cloud Normals

The node that stops PPF lying to you

image/CV/points
CV Points

Type coordinates, get geometry the cv2 nodes accept

image/CV/low-level
CV Points To Contour

The adapter between cv2's output and the contour nodes

image/CV/contours
CV Points To Polar

Turn a bunch of points into bearings around a centre

image/CV/points
CV Polar To Points

Bearings back into pixels

image/CV/points
CV Polynomial Radial Map

Barrel, pincushion and lens warp you can compose

image/CV/remap
CV Pose To Matrix

Rvec and tvec into something 3D tools understand

image/CV/features
CV PPF Pose Estimation

Find a 3D model in a scene with no initial guess

image/CV/contrib
CV Predict Classifier

Load a cv2.ml model and classify in one step

image/CV/ml
CV Preview 3D (Calibrated Camera)

AR overlay that actually lines up

image/CV/low-level
CV Project Points (Sequence)

One point set, a whole tracked clip

image/CV/low-level
CV Project To Plane

A flat look at a 3D cloud

image/CV/points
CV QR Decode At Points

When OpenCV's detector misses the code but you can see it

image/CV/codes
CV QR Detect

Read every QR code in a photo, no models required

image/CV/codes
CV QR Encode

Generate scannable QR codes, correctly spaced

image/CV/codes
CV Quad To Rectangle

The target rectangle for a document scan

image/CV/contours
CV Quad Warp

Straighten a photographed page, or paste onto a screen

image/CV/contours
CV Quality BRISQUE (no-reference)

Grade an image with nothing to compare it to

image/CV/quality
CV Quality BRISQUE Features

The 36 numbers behind the score

image/CV/quality
CV Quality Compare Batch (cv2.quality)

Score a parameter sweep against one reference

image/CV/quality
CV Quasi-Dense Stereo

The stereo matcher with no disparity range to get wrong

image/CV/features
CV Radial Lens Map

Fake a lens — or undo one — with four numbers

image/CV/remap
CV Random Points

A labelled toy dataset with zero downloads and no VRAM

image/CV/ml
CV Rapid Track (Sequence)

An edge tracker, not a detector — and that's the whole catch

image/CV/contrib
CV Rasterize Mesh

The silhouette and depth you actually wanted from a 3D render

image/CV/low-level
CV Recover Pose (Essential Matrix)

Monocular geometry gives you a direction, never a distance

image/CV/features
CV Reduce Array By Label

One row per region — the flat-poster trick, and much more

image/CV/low-level
CV Reduce Points By Label

One representative per cluster, and the clock-hand trick

image/CV/points
CV Reduce Values By Label

Mean and median both lie — use the mode

image/CV/points
CV Refine Flow (Variational)

Polish a flow field you already have

image/CV/features
CV Region Properties

Turn a mask into a spreadsheet

image/CV/contours
CV Region Property Flags

Define the column list once, reuse it everywhere

image/CV/contours
CV Register Point Clouds (3D)

The 3D counterpart of findHomography

image/CV/features
CV Relative Identity Map

The map that outputs zero, and why that's not useless

image/CV/remap
CV Reshape Array

The boring node that four other nodes won't work without

image/CV/low-level
CV Saliency

A subject mask with no model file and no download

image/CV/contrib
CV Sample Array At Points

Look up this map where the features are

image/CV/points
CV Save Camera Params (JSON)

Calibrate once, then never again

image/CV/low-level
CV Save Classifier

Train once, predict forever, no Python node needed

image/CV/ml
CV Scalar

The tiny constant-vector node the raw cv2 wrappers can't live without

image/CV/low-level
CV Scale BBoxes

When the box you found is in the wrong coordinate space

image/CV
CV Scale Homography

Your warp works, it's just at the wrong resolution

image/CV/features
CV Scale Points

Multiplying keypoints by a number, and why you keep needing to

image/CV/points
CV Select Component At Point

'give me the blob that's under this pixel'

image/CV/contours
CV Select Contour

Stop filtering by area, just ask for the biggest one

image/CV/contours
CV Seq2Seq Generate

Florence-2 and ViT-GPT2 driven through cv2.dnn

image/CV/dnn
CV Random Seed

The seed node that has to sit on a wire

image/CV/low-level
CV SFace Embeddings

Face recognition in ComfyUI without the InsightFace install

image/CV/dnn
CV Shape Distance

Matching shapes when 'similar' isn't a moment

image/CV/contours
CV Shape Moments

The shape measurements Hu moments throw away

image/CV/contours
CV Skeletonize

Turn a fat blob into a one-pixel centerline

image/CV/contours
CV Slice Array

Numpy slicing as a node, one axis at a time

image/CV/low-level
CV Snap BBoxes (Crop Policy)

One crop policy, every crop node obeying it

image/CV
CV Solve PnP (Pose)

Where is this chessboard in 3D space?

image/CV/features
CV Solve PnP (All Poses)

The pose problem has more than one answer

image/CV/features
CV Split Point

Getting x and y out of a point so you can actually use them

image/CV/low-level
CV Split Tuple

Unpack a size, a point, or a box into four sockets

image/CV/low-level
CV Stack Batch

Turning a list of arrays into one batched array

image/CV/low-level
CV Stack Feature Classes

Building a labeled training set out of feature arrays

image/CV/ml
CV Stack Images

The before/after strip node (and a contact sheet trick)

image/CV/features
CV Stereo Calibrate (Chessboard)

Get R and T Right the First Time

image/CV/features
CV Stereo Calibrate (Circle Grid)

The Circle Grid Exists Because a Chessboard Looks the Same Upside Down

image/CV/features
CV Stereo Calibration From CSV

Already Have Calibration in a CSV? Skip the Chessboard Entirely

image/CV/features
CV Stereo Disparity (SGBM)

SGBM Is the Stereo Depth Matcher You Actually Want by Default

image/CV/features
CV Stereo Disparity (BM)

Faster Than SGBM, Full of Holes, Still Worth Having

image/CV/features
CV Stereo Disparity (WLS filtered)

WLS Is What Turns a SGBM Depth Map Into Something Usable

image/CV/contrib
CV Stereo Rectify (Uncalibrated)

Rectify Two Cameras Without Calibrating Either One

image/CV/features
CV Stitch

Stitch a Batch of Photos Into One Panorama, Inside ComfyUI

image/CV/features
CV Stitch (Advanced)

Every Panorama Knob OpenCV Hides Behind `cv2.Stitcher`

image/CV/features
CV Stitch (Advanced List)

The Full Stitching Pipeline, Fed One Image at a Time

image/CV/features
CV Stitch Canvas

The Canvas Math Behind a Two-Image Stitch (and Why You Need It)

image/CV/features
CV Stitch (List)

Panorama From a List, Which Is How ComfyUI Loaders Actually Hand You Images

image/CV/features
CV Superpixels

Stop Editing Pixels, Start Editing Regions

image/CV/contrib
CV SVD Flags

One Flags Value, However Many SVD Nodes You Wire It To

image/CV/low-level
CV Take By Index

Paint a Label Map With a Lookup Table (No 256-Colour Limit)

image/CV/low-level
CV Temporal Reduce (Background Plate)

Delete Everyone From the Shot

image/CV/segmentation
CV Term Criteria

The Magic Number 3 Doesn't Have to Be Your Problem

image/CV/low-level
CV Text To Array

Type a List of Labels, Get an Array Your Nodes Will Actually Accept

image/CV/low-level
CV Thin Plate Spline Warp

When a Homography Isn't Enough, Bend the Image Through Your Points

image/CV/features
CV Threshold Flags

Pick Your Thresholding Mode Once, Share It Everywhere

image/CV/low-level
CV To Blob

The blob converter that doesn't flatten your float32 first

image/CV/low-level
CV Track Features (KLT)

The corner tracker that tells you when it failed

image/CV/features
CV Track Window

MeanShift tracking you can actually chain from frame to frame

image/CV/features
CV Train Classifier

Train a real classifier in the graph, then check whether it's lying to you

image/CV/ml
CV Trajectory Error (ATE / RPE)

How to tell whether your odometry is actually any good

image/CV/features
CV Transform (Rotate/Scale/Shift)

One warpAffine instead of four stacked nodes

image/CV
CV Transform Points 3D

Moving a point cloud into someone else's coordinate frame

image/CV/points
CV Triangulate Points (Two-View)

Turning matched pixels in two photos into actual 3D

image/CV/features
CV Tuple

How you feed a (width, height) to a node that only takes two numbers

image/CV/low-level
CV Unproject Points

Turning a click on a pixel into a 3D point

image/CV/low-level
CV Unstack Batch

Getting one frame at a time out of a DNN output batch

image/CV/low-level
CV Vector Displacement Map

Warping with a direction, not just an amount

image/CV/remap
CV Visual Odometry (Sequence)

Recover a camera path from a video, scale problem included

image/CV/features
CV VLM Generate

A 3B vision-language model inside cv2.dnn, one slow token at a time

image/CV/dnn
CV Warp Flags

Stop typing WARP_RELATIVE_MAP into eight different nodes

image/CV/low-level
CV Wave Map

The flag-and-water ripple, as coordinate maths

image/CV/remap
CV WeChat QR Detect

Read every QR code in a frame, including the tiny ones

image/CV/dnn
CV Write PLY (Point Cloud)

Getting a numpy point cloud out of the graph and onto your screen

image/CV/low-level
CV White Balance (xphoto)

Fixing a colour cast so your reference photo is actually usable

image/CV/contrib
CV YOLO Detect Decode

Turning a raw YOLO head into boxes nobody has to guess about

image/CV/dnn
CV YOLO Seg Masks

YOLO Instance Segmentation Without the Ultralytics Install

image/CV/dnn
CV YuNet Face Detect

Faces and Five Landmarks, Minus the InsightFace Licence

image/CV/dnn
⚠️ CV ZeroStride Like

⚠️ CV ZeroStride Like Hands cv2 a Canvas Made of Nothing

image/CV/features
Readme

ComfyUI CV

Computer-vision nodes for ComfyUI. The pack exposes the functions of the OpenCV library (cv2) as nodes — ~470 auto-generated raw cv2.* wrappers plus curated high-level nodes — but it is not limited to plain cv2 calls: a few nodes implement their own algorithm, and not all of cv2 is reachable. See the disclaimers below for both caveats.

This project is an independent, personal endeavor and is not affiliated with, endorsed by, or part of the official OpenCV project. It does not reflect the official roadmap or the views of the OpenCV maintainers. It is provided 'as is', without any express or implied warranties.

"OpenCV" is a registered trademark of the Open Source Vision Foundation — the name as much as the logo. This pack is therefore named ComfyUI CV, not after the library, and names OpenCV only to describe what it wraps.

<details> <summary> <b>Disclaimers</b> (that you should read) ⬅ click to expand </summary> <br>
  1. Created with heavy use of Generative AI (LLMs). The following models were used: opencode's "Big Pickle" stealth models; DeepSeek V4 family; Dots3-Note Preview; Fable 5; Kimi K3; Ling-3.0-flash; Opus family.

    Besides potential ethical concerns, it also entails the following practical risks:

    • Test‑driven overfitting: During development, some workflows were developed via a test‑driven approach with sample inputs and outputs. In some cases, the agent generating the code appears to have over‑fitted to the provided examples at the expense of broader correctness. For instance, the 5th and 6th Hu Moments were initially dropped because they were not represented in the test suite. While this specific error was later corrected, it is possible that similar undetected mistakes exist elsewhere in the codebase.

    • Exhaustive input handling: The "smart" behavior for input types and processing is implemented via exhaustive lists in lowlevel.py. This does not directly affect end‑users, but it may present a maintenance burden for future contributors or for anyone extending the library.

    • Production readiness: Given the points above, it is not recommended to use this library in production without a thorough, independent review of the used source code. You should verify that all logic aligns with your own requirements, validate with your own test cases, and consider adding additional safeguards.

  2. Updates not planned; may happen at any time. Do not expect prompt support regarding potential issues/fixes.

  3. Not all OpenCV functionality is exposed. Despite ~470 auto-generated raw cv2.* wrappers plus curated nodes, only a subset of cv2 is reachable: the generator parses top-level functions only, so class-based APIs (create* factories, detectors, matchers) and complex multi-return functions are absent unless a curated node bridges them (see docs/custom_nodes.md).

  4. Some low-level nodes cannot run on a given OpenCV distribution. The node registry is generated from whatever the installed build exposes, which can include entries whose implementation the build lacks. On the pinned reference build, for instance, ximgproc.fastBilateralSolverFilter is exposed but always raises (-213) needs to be compiled with EIGEN when executed; another build could surface more or fewer such entries.

    [!NOTE]
    NONFREE entries are not something to go hunting for: stock opencv-contrib-python(-headless) wheels are built with OPENCV_ENABLE_NONFREE=OFF.

    NO shipped workflow uses NONFREE functions.

  5. DNN support is limited, and ComfyUI often already does it better. Everything here goes through cv2.dnn on principle — that is the point of the pack — even where ComfyUI has a first-class node for the same job. Frame interpolation is the clearest example: core ships "Run Frame Interpolation Model" (FrameInterpolate) plus its loader, which run RIFE and FILM natively in PyTorch, on the GPU, in fp16, with model offloading and a 2–16× multiplier applied across a whole batch. The example workflow for RIFE does it the heretic way instead: an ONNX export, driven through the generic cv2.dnn nodes, on the CPU, one frame pair per execution, with the input padded to a multiple of 32 by hand. If you actually want to interpolate a video, use the core node. Use this one to see how the pieces fit together or to reach a model core does not support.

    The same caveat applies to the DNN examples generally. Models that run fine in PyTorch had to be converted to ONNX, because that is the format OpenCV's DNN module supports — and conversion is sometimes not sufficient: a perfectly valid export can still be unloadable here. Support for modern architectures is limited by both the DNN implementation and the pinned OpenCV version.

  6. Models are not bundled. DNN/LLM workflows need external model downloads (models/onnx), and some might require conversion into .onnx (.tflite may also work, I did not test).

    Model source URLs in the workflow notes.

  7. Raw low-level wrappers are auto-generated and uncurated — expect to handle conversions and edge cases yourself.

  8. The workflows are not production-grade. They exist mainly to showcase, plan and test the functionalities; several pipelines/heuristics are overfitted to specific datasets (e.g. the sky mask and stereo settings tuned to StereoGeo-CARLA) or may be lacking, so they are not usable in actual production contexts. Individual nodes may still be genuinely useful in real workflows.

  9. Most nodes are direct cv2.* wrappers or high-level compositions of cv2 calls, but a few are genuine exceptions that reimplement an algorithm instead. CV Photometric Align (Gain/Bias) fits a robust per-channel gain/bias via trimmed numpy least squares, and CV Local Linear Fit runs a windowed regression around every pixel; the crop/paste geometry (boxpolicy/polytype) is pure Python + numpy with no cv2 at all. They are curated like everything else, but they are not OpenCV functions in the wrapper sense (see docs/custom_nodes.md).

</details> <details> <summary> <b>Gallery</b> ⬅ click to expand </summary> <br> <table> <tr> <td><img src="docs/gifs/annotate_grabcut_gm_optimized.gif" alt="Annotate grabcut"></td> <td><img src="docs/gifs/quad_warp_extract_gm_optimized.gif" alt="Quad warp extract"></td> </tr> <tr> <td><img src="docs/gifs/quad_warp_fill_gm_optimized.gif" alt="Quad warp fill"></td> <td><img src="docs/gifs/thin_plate_warp.gif" alt="Thin plate warp"></td> </tr> <tr> <td><img src="docs/gifs/thin_plate_warp_over_bg.gif" alt="Thin plate warp over background"></td> <td><img src="docs/imgs/clean_plate_matte.jpg" alt="Clean plate matte"></td> </tr> <tr> <td colspan="2"><img src="docs/imgs/kmeans_masks.jpg" alt="K-means masks"></td> </tr> <tr> <td colspan="2"><img src="docs/imgs/lightglue.jpg" alt="Lightglue"></td> </tr> <tr> <td colspan="2"><img src="docs/imgs/neural_style_transfer_mosaic.jpg" alt="Neural style transfer mosaic"></td> </tr> <tr> <td><img src="docs/imgs/panorama_stitching.jpg" alt="Panorama stitching"></td> <td><img src="docs/imgs/scene_depth.jpg" alt="Scene depth"></td> </tr> <tr> <td colspan="2"><img src="docs/imgs/relative_remap.jpg" alt="Relative remap"></td> </tr> <tr> <td><img src="docs/imgs/yunet_face_detection.jpg" alt="YuNet face detection"></td> <td><img src="docs/imgs/qr_code_encode.jpg" alt="QR code encode"></td> </tr> </table> </details> <details> <summary> <b>Installation and Troubleshooting</b> ⬅ click to expand </summary> <br>

Requires Python ≥ 3.12 and a recent ComfyUI built on the V3 node API.

The only required python dependency can be installed via the pyproject.toml/requirements or with the following command:

pip install "opencv-contrib-python-headless~=5.0.0.93"

Behavior is curated against 5.0.0.93; other versions may behave differently.

The headless wheel is the declared dependency because nothing in the pack uses highgui (no imshow/waitKey/trackbars — the registry generator blacklists them outright). The GUI opencv-contrib-python build is equally usable if something else already installed it.

What does matter is contrib: installing a non-contrib wheel (opencv-python / opencv-python-headless) over a contrib one silently empties the contrib submodules and contrib nodes disappear — all four distributions share one site-packages/cv2. tools/repair_opencv_contrib.py diagnoses (--check) and repairs (--apply) that, but there is no install-time guard.

Some workflows and subgraphs are dependent on other custom node packages, namely:

</details> <details> <summary> <b>Get Started</b> ⬅ click to expand </summary> <br>

Install the example inputs

The example workflows load their photos, videos and the MilkTruck.glb model from this pack's example_inputs/ folder. ComfyUI's Load Image / Load Video / Load 3D nodes are dropdowns, though: they can only offer what is already inside ComfyUI/input, so on a fresh install those nodes open red.

Run workflows/01_install_example_inputs.json once and the copy is done for you — it is a single node, CV Install Example Inputs (image/CV), with nothing to wire up:

  1. Load the workflow and press Run.
  2. Reload the ComfyUI page. The Load* dropdowns are built when the node definitions are fetched, so files copied during a session only appear after a refresh.

Details worth knowing:

  • Nothing is overwritten by default. existing_files starts on keep the file already there, so a name that already exists in your input folder wins and a second run is a no-op (everything comes back as skipped). Switch it to overwrite it with the packaged copy only to repair a sample you edited in place.
  • Look before you leap. Setting mode to list what would be copied (dry run) reports exactly what a real run would do and writes nothing — worth doing if your input folder holds work of your own.
  • 3D models go to ComfyUI/input/3d, which is the only folder core's Load 3D nodes list. Everything else — images, video, and the calibration .json/.yaml/.csv/.txt sidecars — lands in ComfyUI/input itself.
  • Nothing outside input is touched, and nothing is ever deleted. The node is failure tolerant: a missing source folder or an unwritable file leaves ok=false and names the problem in report instead of halting the run.

Copying by hand works just as well — example_inputs/ is ~33 MB of ordinary files, and example_inputs/sources.txt records where each one came from and under which license.

[!NOTE] The .onnx / cascade / LLM / VLM models are a separate matter: they are not in this repo and not part of example_inputs. See model_sources.txt at the repo root for where to get them.

Two inputs do not ship, because of size: the 48 MB driving clip for exercise_visual_odometry_video.json (its ground-truth poses do ship, under a non-commercial licence) and the flash / no-flash photo pair in 10_ximgproc_edge_aware_filters.json. Each of those workflows carries a note on the canvas explaining where to get them. Everything else a workflow loads is in example_inputs/, and the development test suite fails if that stops being true.

More reading and reference material: Documentation below.

</details> <details> <summary> <b>Documentation</b> ⬅ click to expand </summary> <br>

| Link | What it is | Open it when | | --- | --- | --- | | Custom nodes | Catalog of every hand-written node with usage notes and limits | wiring a graph and want a node's intended use | | Subgraph blueprints | 65 reusable compositions, each a one-node workflow to open and build around | a step you keep rebuilding — a blueprint may already exist | | OpenCV 5.0 documentation | Official upstream API reference | using a low-level cv2.* wrapper and want the exact signature/edge cases | | Model sources | External DNN/LLM models: download URLs, target folders, license record | a model-backed workflow opens red | | Example input sources | Provenance and licenses of the bundled sample media | planning to redistribute outputs or audit assets |

</details>

Credits

Gerold Meisinger, the maintainer of opencv-comfyui from which this project was forked.

Abhishek Gola, the maintainer of opencv_contribution which contains many of the .onnx models showcased in this project and example scripts on how to run them.

License and provenance

Copyright (C) 2026 bmad4ever. Licensed under GPL-3.0-only — every first-party source file carries an SPDX-License-Identifier: GPL-3.0-only header.

The GPL is inherited, not picked: this pack is a fork of opencv-comfyui (GPL-3.0), which is also where the pack's name, the idea of generating raw cv2.* node wrappers from the type stubs, and the NPARRAY socket come from. What ships today is a rewrite on ComfyUI's V3 node API; the handful of files whose lineage still runs back upstream — __init__.py, opencv_nodes/convert.py, opencv_nodes/lowlevel.py, the generated opencv_nodes/registry*.py, and generator/generator.py — say so in their own header.

Bundled third-party code

Not covered by the notice above; each keeps its own license.

| Where | What | License | |---|---|---| | web/lib/ | three.js, plus GLTFLoader / OrbitControls / TransformControls / BufferGeometryUtils | MIT — web/lib/LICENSE.three.txt | | web/lib/ | Apache ECharts | Apache-2.0 — web/lib/LICENSE.echarts.txt, web/lib/NOTICE.echarts.txt | | web/lib/ | KaTeX and its fonts | MIT — web/lib/LICENSE.katex.txt | | workers/dnn_tasks.py | the _MPPalmDet / _MPHandPose classes, ported from the OpenCV Zoo handpose_estimation_mediapipe reference (upstream models: Google MediaPipe Hands) | Apache-2.0 | | workers/stitch_advanced_worker.py | stage order and parameter set follow OpenCV's own samples/python/stitching_detailed.py | Apache-2.0 | | opencv_nodes/param_docs.py, opencv_nodes/return_docs.py | per-parameter tooltip text extracted from the OpenCV documentation | Apache-2.0, OpenCV contributors |

OpenCV itself is a runtime dependency, not bundled: cv2 comes from the opencv-contrib-python-headless wheel you install (Apache-2.0), and no OpenCV binaries ship here.

Image and video assets are recorded in example_inputs/sources.txt, and the screenshots and GIFs in this README — with the inputs each one derives from — in docs/sources.txt. The .onnx, cascade, LLM and VLM models are not in this repo at all; their provenance and licenses are in model_sources.txt. Read that file before redistributing anything you download through it: a few of those models carry terms stricter than this pack's (notably yolo26n-seg.onnx, AGPL-3.0 with a network clause).

One asset is not under the GPL grant. example_inputs/kitti_2011_09_26_drive_0009_poses.txt is the KITTI ground-truth pose track, CC BY-NC-SA 3.0 — non-commercial, inherited from the KITTI benchmark. It is the only non-commercial file in the repository, included for the visual-odometry example only; the GPL-3.0 grant above does not extend to it. Remove that one file if you need a uniformly commercial-safe tree.

OpenCV is a registered trademark of the Open Source Vision Foundation. This pack is an independent, unofficial wrapper, as stated at the top.