Loading the parity record
Fetching the measured run — the pinned upstream oracle, every symbol and every case.
Fetching the measured run — the pinned upstream oracle, every symbol and every case.
Parity / opencv
Every number on this page was produced by running both implementations over the same cases: the real opencv-python package pinned at 4.11.0 answers first, and its answer is the expectation the Go port is held to. Nothing is a hand-written expectation, so a new upstream release re-scores the port on its own. See opencv for the port's own documentation. Source: github.com/malcolmston/opencv.
Not a generic diagram: every node below names an artefact of this harness — the pinned package it installed, the runner files it started, the case files it streamed, and the counts it wrote out.
| Case group | Cases | Match | Mismatch | Group parity |
|---|---|---|---|---|
| findings | 85 | 0 | 0 | 0.0% |
| contours | 84 | 0 | 0 | 0.0% |
| threshold | 82 | 0 | 0 | 0.0% |
| mat | 79 | 0 | 0 | 0.0% |
| morphology | 75 | 0 | 0 | 0.0% |
| edges | 54 | 0 | 0 | 0.0% |
| geometric | 44 | 0 | 0 | 0.0% |
| histogram | 43 | 0 | 0 | 0.0% |
| filters | 42 | 0 | 0 | 0.0% |
| arithmetic | 40 | 0 | 0 | 0.0% |
| linalg | 29 | 0 | 0 | 0.0% |
| colour | 27 | 0 | 0 | 0.0% |
| hough | 20 | 0 | 0 | 0.0% |
| template | 20 | 0 | 0 | 0.0% |
| connected | 16 | 0 | 0 | 0.0% |
| pyramids | 11 | 0 | 0 | 0.0% |
Every exported symbol of the upstream package, and what the port offers for it. The upstream list is derived mechanically, never from a README: python3 -c "import cv2; print(len([n for n in dir(cv2) if not n.startswith('_') and callable(getattr(cv2,n))]))" # 668
python3 -c "import cv2; print(len([n for n in dir(cv2) if not n.startswith('_')]))" # 2413
python3 -c "import cv2; print(len([n for n in dir(cv2) if not n.startswith('_') and type(getattr(cv2,n)).__name__=='module']))" # 28
python3 -c "import cv2; print(len([n for n in dir(cv2) if n.startswith('COLOR_')]))" # 374
python3 -c "import numpy as np; print(len([n for n in dir(np.ndarray) if not n.startswith('_')]))" …. A symbol with no case is untested, never a match.
| Upstream symbol | Go symbol | Status | Cases | Note |
|---|---|---|---|---|
| cv2.add | cv.Add | match | 3 — add-sat, add-3ch, add-shape-mismatch | |
| cv2.subtract | cv.Subtract | match | 1 — subtract-sat | |
| cv2.absdiff | cv.AbsDiff | match | 2 — absdiff, absdiff-3ch | |
| cv2.multiply | cv.Multiply | match | 2 — multiply-scale-1, multiply-scale-small | |
| cv2.divide | cv.Divide | match | 2 — divide-scale-255, divide-by-zero-region | |
| cv2.addWeighted | cv.AddWeighted | match | 2 — add-weighted, add-weighted-negative | |
| cv2.bitwise_and | cv.BitwiseAnd | match | 1 — bitwise-and | |
| cv2.bitwise_or | cv.BitwiseOr | match | 1 — bitwise-or | |
| cv2.bitwise_xor | cv.BitwiseXor | match | 1 — bitwise-xor | |
| cv2.bitwise_not | cv.BitwiseNot | match | 1 — bitwise-not | |
| cv2.min | cv.Min | match | 1 — min-mat | |
| cv2.max | cv.Max | match | 1 — max-mat | |
| cv2.inRange | cv.InRange | match | 3 — in-range-1ch, in-range-3ch, in-range-empty | |
| cv2.convertScaleAbs | cv.ConvertScaleAbs | match | 2 — convert-scale-abs, convert-scale-abs-negate | |
| cv2.normalize | cv.Normalize | match | 3 — normalize-minmax, normalize-minmax-narrow, normalize-constant | |
| cv2.countNonZero | cv.CountNonZero | match | 2 — count-non-zero, count-non-zero-3ch | |
| cv2.findNonZero | cv.FindNonZero | match | 1 — find-non-zero | |
| cv2.mean | cv.Mean | match | 2 — mean-1ch, mean-3ch | |
| cv2.meanStdDev | cv.MeanStdDev | match | 1 — mean-stddev | |
| cv2.sumElems | cv.SumElems | match | 1 — sum-elems | |
| cv2.norm | cv.NormL1Mat | match | 1 — norm-l1 | |
| cv2.norm | cv.NormL2Mat | match | 1 — norm-l2 | |
| cv2.norm | cv.NormInfMat | match | 1 — norm-inf | |
| cv2.LUT | cv.LUT | match | 3 — lut-invert, lut-posterise, lut-short-table | |
| cv2.LUT per plane | cv.LUTChannels | match | 1 — lut-channels | |
| cv2.cvtColor/ColorRGB2Gray | cv.CvtColor | match | 1 — cvt-rgb-to-gray | |
| cv2.cvtColor/ColorBGR2Gray | cv.CvtColor | match | 1 — cvt-bgr-to-gray | |
| cv2.cvtColor/ColorRGB2BGR | cv.CvtColor | match | 1 — cvt-rgb-to-bgr | |
| cv2.cvtColor/ColorBGR2RGB | cv.CvtColor | match | 1 — cvt-bgr-to-rgb | |
| cv2.cvtColor/ColorRGB2HSV | cv.CvtColor | match | 1 — cvt-rgb-to-hsv | |
| cv2.cvtColor/ColorRGB2Lab | cv.CvtColor | match | 1 — cvt-rgb-to-lab | |
| cv2.cvtColor/ColorRGB2YCrCb | cv.CvtColor | match | 1 — cvt-rgb-to-ycrcb | |
| cv2.cvtColor/ColorRGB2HLS | cv.CvtColor | match | 1 — cvt-rgb-to-hls | |
| cv2.cvtColor/ColorHSV2RGB | cv.CvtColor | differs | 1 — cvt-hsv-to-rgb | |
| cv2.cvtColor/ColorLab2RGB | cv.CvtColor | match | 1 — cvt-lab-to-rgb | |
| cv2.cvtColor/ColorYCrCb2RGB | cv.CvtColor | match | 1 — cvt-ycrcb-to-rgb | |
| cv2.cvtColor/ColorHLS2RGB | cv.CvtColor | differs | 1 — cvt-hls-to-rgb | |
| cv2.cvtColor/COLOR_GRAY2RGB | cv.CvtColor | match | 1 — cvt-gray-to-rgb | |
| cv2.cvtColor | cv.CvtColor | match | 3 — cvt-checker-rgb-to-hsv, cvt-noise-rgb-to-lab, cvt-gray-input-to-hsv | |
| cv2.cvtColor/COLOR_RGB2XYZ | cv.RGBToXYZ | match | 1 — rgb-to-xyz | |
| cv2.cvtColor/COLOR_XYZ2RGB | cv.XYZToRGB | match | 1 — xyz-to-rgb | |
| cv2.cvtColor/COLOR_RGB2YUV | cv.RGBToYUV | match | 1 — rgb-to-yuv | |
| cv2.cvtColor/COLOR_YUV2RGB | cv.YUVToRGB | match | 1 — yuv-to-rgb | |
| cv2.cvtColor/COLOR_RGB2HSV_FULL | cv.RGBToHSVFull | match | 1 — rgb-to-hsv-full | |
| cv2.cvtColor/COLOR_HSV2RGB_FULL | cv.HSVFullToRGB | match | 1 — hsv-full-to-rgb | |
| cv2.cvtColor/COLOR_RGB2GRAY | cv.RGBToGray601 | match | 1 — rgb-to-gray-601 | |
| cv2.cvtColor/COLOR_RG2RGB | cv.Demosaic | differs | 1 — demosaic-bayerrg | |
| cv2.cvtColor/COLOR_GR2RGB | cv.Demosaic | differs | 1 — demosaic-bayergr | |
| cv2.cvtColor/COLOR_BG2RGB | cv.Demosaic | differs | 1 — demosaic-bayerbg | |
| cv2.cvtColor/COLOR_GB2RGB | cv.Demosaic | differs | 1 — demosaic-bayergb | |
| cv2.connectedComponents | cv.ConnectedComponents | match | 9 — cc-4-blobs, cc-4-checker, cc-4-circles +6 more | |
| cv2.connectedComponentsWithStats | cv.ConnectedComponentsWithStats | differs | 7 — ccstats-4-blobs, ccstats-4-checker, ccstats-4-circles +4 more | |
| cv2.findContours | cv.FindContours | match | 24 — findcontours-external-none-blobs, findcontours-external-none-shapes, findcontours-external-none-circles +21 more | |
| cv2.contourArea | cv.ContourArea | match | 3 — contourarea-square, contourarea-triangle, contourarea-degenerate | |
| cv2.arcLength | cv.ArcLength | match | 3 — arclength-square-closed, arclength-square-open, arclength-triangle | |
| cv2.approxPolyDP | cv.ApproxPolyDP | differs | 7 — approxpoly-zig-0p5-closed, approxpoly-zig-0p5-open, approxpoly-zig-1p5-closed +4 more | |
| cv2.convexHull | cv.ConvexHull | match | 3 — convexhull-zig, convexhull-square, convexhull-collinear | |
| cv2.isContourConvex | cv.IsContourConvex | match | 3 — iscontourconvex-square, iscontourconvex-zig, iscontourconvex-triangle | |
| cv2.boundingRect | cv.BoundingRect | match | 3 — boundingrect-square, boundingrect-zig, boundingrect-single-point | |
| cv2.minAreaRect | cv.MinAreaRect | match | 3 — minarearect-square, minarearect-zig, minarearect-triangle | |
| cv2.boundingRect vs cv2.minAreaRect | cv.BoundingRect vs cv.MinAreaRect | differs | 3 — rect-vs-minarea-square, rect-vs-minarea-zig, rect-vs-minarea-triangle | |
| cv2.boxPoints | cv.BoxPoints | match | 2 — boxpoints-axis-aligned, boxpoints-rotated | |
| cv2.minEnclosingCircle | cv.MinEnclosingCircle | match | 2 — minenclosingcircle-square, minenclosingcircle-zig | |
| cv2.pointPolygonTest | cv.PointPolygonTest | match | 5 — pointpolygontest-6-5-inside, pointpolygontest-6-5-dist, pointpolygontest-0-0-dist +2 more | |
| cv2.fitLine | cv.FitLine | match | 2 — fitline-diagonal, fitline-noisy | |
| cv2.moments | cv.ImageMoments | match | 3 — moments-blobs, moments-shapes, moments-gradient | |
| cv2.HuMoments | cv.HuMoments | match | 3 — humoments-blobs, humoments-shapes, humoments-gradient | |
| cv2.moments centroid | cv.Moments.Centroid | match | 3 — centroid-blobs, centroid-shapes, centroid-gradient | |
| cv2.matchShapes | cv.MatchShapes | differs | 2 — matchshapes-blobs-shapes, matchshapes-self | |
| cv2.ellipse2Poly | cv.Ellipse2Poly | differs | 2 — ellipse2poly-full, ellipse2poly-arc | |
| cv2.clipLine | cv.ClipLine | differs | 3 — clipline-inside, clipline-crossing, clipline-outside | |
| Bresenham (cv::LineIterator is not exposed to Python) | cv.NewLineIterator | match | 5 — lineiterator-0-0-10-4, lineiterator-0-0-4-10, lineiterator-5-5-0-0 +2 more | |
| cv2.Sobel | cv.Sobel | differs | 10 — sobel-10-k3, sobel-01-k3, sobel-11-k3 +7 more | |
| cv2.Sobel (default BORDER_REFLECT_101) | cv.Sobel | differs | 1 — sobel-cv2-default-border | |
| cv2.Sobel/CV_64F | cv.SobelFloat | match | 3 — sobelfloat-10-k3, sobelfloat-01-k3, sobelfloat-11-k3 | |
| cv2.Scharr | cv.Scharr | match | 3 — scharr-10, scharr-01, scharr-invalid | |
| cv2.Laplacian | cv.Laplacian | differs | 5 — laplacian-k1, laplacian-k3, laplacian-k5 +2 more | |
| cv2.Laplacian (default BORDER_REFLECT_101) | cv.Laplacian | differs | 1 — laplacian-cv2-default-border | |
| cv2.Canny | cv.Canny | differs | 6 — canny-shapes-50-150, canny-shapes-high-100-200, canny-gradnoise-20-60 +3 more | |
| cv2.spatialGradient | cv.SpatialGradient | match | 1 — spatial-gradient | |
| cv2.cornerHarris | cv.CornerHarris | differs | 3 — harris-2-3, harris-3-3, harris-2-5 | |
| cv2.cornerMinEigenVal | cv.CornerMinEigenVal | differs | 2 — mineigenval-2-3, mineigenval-3-3 | |
| cv2.preCornerDetect | cv.PreCornerDetect | differs | 1 — precorner-detect | |
| cv2.getDerivKernels | cv.GetDerivKernels | differs | 6 — derivkernels-10-3, derivkernels-01-3, derivkernels-10-5 +3 more | |
| cv2.getGaussianKernel | cv.GetGaussianKernel | differs | 4 — gaussiankernel-3-0p8, gaussiankernel-5-1p0, gaussiankernel-5-m1p0 +1 more | |
| cv2.getGaborKernel | cv.GetGaborKernel | match | 1 — gaborkernel | |
| cv2.integral | cv.Integral | match | 1 — integral | |
| cv2.integral2 | cv.IntegralSquared | match | 1 — integral-squared | |
| cv2.distanceTransform/DIST_L2 + DIST_MASK_PRECISE | cv.DistanceTransform | differs | 2 — distance-transform-blobs, distance-transform-shapes | |
| cv2.floodFill | cv.FloodFill | match | 3 — floodfill-shapes, floodfill-background, floodfill-oob-seed | |
| cv2.blur | cv.Blur | match | 6 — blur-3, blur-3ch-3, blur-5 +3 more | |
| cv2.boxFilter | cv.BoxFilter | match | 4 — boxfilter-3-norm, boxfilter-3-raw, boxfilter-5-norm +1 more | |
| cv2.GaussianBlur | cv.GaussianBlur | match | 7 — gaussian-3-0p8, gaussian-3-1p5, gaussian-5-1p0 +4 more | |
| cv2.blur (default BORDER_REFLECT_101) | cv.Blur | differs | 1 — blur-cv2-default-border | |
| cv2.GaussianBlur (default BORDER_REFLECT_101) | cv.GaussianBlur | differs | 1 — gaussian-cv2-default-border | |
| cv2.medianBlur | cv.MedianBlur | match | 5 — median-3, median-3ch-3, median-5 +2 more | |
| cv2.bilateralFilter | cv.BilateralFilter | differs | 4 — bilateral-5-30-10, bilateral-5-75-75, bilateral-9-50-20 +1 more | |
| cv2.filter2D | cv.Filter2D | match | 6 — filter2d-identity, filter2d-mean, filter2d-sharpen +3 more | |
| cv2.sepFilter2D | cv.Filter2DSep | match | 2 — sepfilter-binomial, sepfilter-asymmetric | |
| cv2.sqrBoxFilter | cv.SqrBoxFilter | match | 4 — sqrbox-3-norm, sqrbox-3-raw, sqrbox-5-norm +1 more |
Every case the harness streamed to both runners, with the exact upstream symbol and Go symbol it exercised. A deliberate, documented difference is a deviation and is counted apart from a mismatch.
| Case | Group | Upstream symbol | Go symbol | Status | Note |
|---|---|---|---|---|---|
| add-sat | arithmetic | cv2.add | cv.Add | match | |
| add-3ch | arithmetic | cv2.add | cv.Add | match | |
| add-shape-mismatch | arithmetic | cv2.add | cv.Add | match | |
| subtract-sat | arithmetic | cv2.subtract | cv.Subtract | match | |
| absdiff | arithmetic | cv2.absdiff | cv.AbsDiff | match | |
| absdiff-3ch | arithmetic | cv2.absdiff | cv.AbsDiff | match | |
| multiply-scale-1 | arithmetic | cv2.multiply | cv.Multiply | match | |
| multiply-scale-small | arithmetic | cv2.multiply | cv.Multiply | match | scaled 8-bit results round half-away-from-zero in cv2; budget 1 LSB |
| divide-scale-255 | arithmetic | cv2.divide | cv.Divide | match | |
| divide-by-zero-region | arithmetic | cv2.divide | cv.Divide | match | |
| add-weighted | arithmetic | cv2.addWeighted | cv.AddWeighted | match | |
| add-weighted-negative | arithmetic | cv2.addWeighted | cv.AddWeighted | match | |
| bitwise-and | arithmetic | cv2.bitwise_and | cv.BitwiseAnd | match | |
| bitwise-or | arithmetic | cv2.bitwise_or | cv.BitwiseOr | match | |
| bitwise-xor | arithmetic | cv2.bitwise_xor | cv.BitwiseXor | match | |
| bitwise-not | arithmetic | cv2.bitwise_not | cv.BitwiseNot | match | |
| min-mat | arithmetic | cv2.min | cv.Min | match | |
| max-mat | arithmetic | cv2.max | cv.Max | match | |
| in-range-1ch | arithmetic | cv2.inRange | cv.InRange | match | |
| in-range-3ch | arithmetic | cv2.inRange | cv.InRange | match | |
| in-range-empty | arithmetic | cv2.inRange | cv.InRange | match | |
| convert-scale-abs | arithmetic | cv2.convertScaleAbs | cv.ConvertScaleAbs | match | |
| convert-scale-abs-negate | arithmetic | cv2.convertScaleAbs | cv.ConvertScaleAbs | match | |
| normalize-minmax | arithmetic | cv2.normalize | cv.Normalize | match | |
| normalize-minmax-narrow | arithmetic | cv2.normalize | cv.Normalize | match | |
| normalize-constant | arithmetic | cv2.normalize | cv.Normalize | match | |
| count-non-zero | arithmetic | cv2.countNonZero | cv.CountNonZero | match | |
| count-non-zero-3ch | arithmetic | cv2.countNonZero | cv.CountNonZero | match | |
| find-non-zero | arithmetic | cv2.findNonZero | cv.FindNonZero | match | |
| mean-1ch | arithmetic | cv2.mean | cv.Mean | match | |
| mean-3ch | arithmetic | cv2.mean | cv.Mean | match | |
| mean-stddev | arithmetic | cv2.meanStdDev | cv.MeanStdDev | match | |
| sum-elems | arithmetic | cv2.sumElems | cv.SumElems | match | |
| norm-l1 | arithmetic | cv2.norm | cv.NormL1Mat | match | |
| norm-l2 | arithmetic | cv2.norm | cv.NormL2Mat | match | |
| norm-inf | arithmetic | cv2.norm | cv.NormInfMat | match | |
| lut-invert | arithmetic | cv2.LUT | cv.LUT | match | |
| lut-posterise | arithmetic | cv2.LUT | cv.LUT | match | |
| lut-short-table | arithmetic | cv2.LUT | cv.LUT | match | |
| lut-channels | arithmetic | cv2.LUT per plane | cv.LUTChannels | match | |
| cvt-rgb-to-gray | colour | cv2.cvtColor/ColorRGB2Gray | cv.CvtColor | match | 8-bit colour conversions round independently; budget 1 LSB per sample and 1 LSB of systematic per-channel bias |
| cvt-bgr-to-gray | colour | cv2.cvtColor/ColorBGR2Gray | cv.CvtColor | match | 8-bit colour conversions round independently; budget 1 LSB per sample and 1 LSB of systematic per-channel bias |
| cvt-rgb-to-bgr | colour | cv2.cvtColor/ColorRGB2BGR | cv.CvtColor | match | 8-bit colour conversions round independently; budget 1 LSB per sample and 1 LSB of systematic per-channel bias |
| cvt-bgr-to-rgb | colour | cv2.cvtColor/ColorBGR2RGB | cv.CvtColor | match | 8-bit colour conversions round independently; budget 1 LSB per sample and 1 LSB of systematic per-channel bias |
| cvt-rgb-to-hsv | colour | cv2.cvtColor/ColorRGB2HSV | cv.CvtColor | match | 8-bit colour conversions round independently; budget 1 LSB per sample and 1 LSB of systematic per-channel bias |
| cvt-rgb-to-lab | colour | cv2.cvtColor/ColorRGB2Lab | cv.CvtColor | match | 8-bit colour conversions round independently; budget 1 LSB per sample and 1 LSB of systematic per-channel bias |
| cvt-rgb-to-ycrcb | colour | cv2.cvtColor/ColorRGB2YCrCb | cv.CvtColor | match | 8-bit colour conversions round independently; budget 1 LSB per sample and 1 LSB of systematic per-channel bias |
| cvt-rgb-to-hls | colour | cv2.cvtColor/ColorRGB2HLS | cv.CvtColor | match | 8-bit colour conversions round independently; budget 1 LSB per sample and 1 LSB of systematic per-channel bias |
| cvt-hsv-to-rgb | colour | cv2.cvtColor/ColorHSV2RGB | cv.CvtColor | mismatch | inverse conversions accumulate two roundings; budget 2 LSB |
| cvt-lab-to-rgb | colour | cv2.cvtColor/ColorLab2RGB | cv.CvtColor | match | inverse conversions accumulate two roundings; budget 2 LSB |
| cvt-ycrcb-to-rgb | colour | cv2.cvtColor/ColorYCrCb2RGB | cv.CvtColor | match | inverse conversions accumulate two roundings; budget 2 LSB |
| cvt-hls-to-rgb | colour | cv2.cvtColor/ColorHLS2RGB | cv.CvtColor | mismatch | inverse conversions accumulate two roundings; budget 2 LSB |
| cvt-gray-to-rgb | colour | cv2.cvtColor/COLOR_GRAY2RGB | cv.CvtColor | match | |
| cvt-checker-rgb-to-hsv | colour | cv2.cvtColor | cv.CvtColor | match | |
| cvt-noise-rgb-to-lab | colour | cv2.cvtColor | cv.CvtColor | match | |
| cvt-gray-input-to-hsv | colour | cv2.cvtColor | cv.CvtColor | match | single-channel input to a 3-channel conversion must fail on both sides |
| rgb-to-xyz | colour | cv2.cvtColor/COLOR_RGB2XYZ | cv.RGBToXYZ | match | |
| xyz-to-rgb | colour | cv2.cvtColor/COLOR_XYZ2RGB | cv.XYZToRGB | match | |
| rgb-to-yuv | colour | cv2.cvtColor/COLOR_RGB2YUV | cv.RGBToYUV | match | |
| yuv-to-rgb | colour | cv2.cvtColor/COLOR_YUV2RGB | cv.YUVToRGB | match | |
| rgb-to-hsv-full | colour | cv2.cvtColor/COLOR_RGB2HSV_FULL | cv.RGBToHSVFull | match | |
| hsv-full-to-rgb | colour | cv2.cvtColor/COLOR_HSV2RGB_FULL | cv.HSVFullToRGB | match | |
| rgb-to-gray-601 | colour | cv2.cvtColor/COLOR_RGB2GRAY | cv.RGBToGray601 | match | |
| demosaic-bayerrg | colour | cv2.cvtColor/COLOR_RG2RGB | cv.Demosaic | mismatch | |
| demosaic-bayergr | colour | cv2.cvtColor/COLOR_GR2RGB | cv.Demosaic | mismatch | |
| demosaic-bayerbg | colour | cv2.cvtColor/COLOR_BG2RGB | cv.Demosaic | mismatch | |
| demosaic-bayergb | colour | cv2.cvtColor/COLOR_GB2RGB | cv.Demosaic | mismatch | |
| cc-4-blobs | connected | cv2.connectedComponents | cv.ConnectedComponents | match | labels canonicalised by first appearance, so only the partition is compared |
| ccstats-4-blobs | connected | cv2.connectedComponentsWithStats | cv.ConnectedComponentsWithStats | match | |
| cc-4-checker | connected | cv2.connectedComponents | cv.ConnectedComponents | match | labels canonicalised by first appearance, so only the partition is compared |
| ccstats-4-checker | connected | cv2.connectedComponentsWithStats | cv.ConnectedComponentsWithStats | mismatch | |
| cc-4-circles | connected | cv2.connectedComponents | cv.ConnectedComponents | match | labels canonicalised by first appearance, so only the partition is compared |
| ccstats-4-circles | connected | cv2.connectedComponentsWithStats | cv.ConnectedComponentsWithStats | match | |
| cc-8-blobs | connected | cv2.connectedComponents | cv.ConnectedComponents | match | labels canonicalised by first appearance, so only the partition is compared |
| ccstats-8-blobs | connected | cv2.connectedComponentsWithStats | cv.ConnectedComponentsWithStats | match | |
| cc-8-checker | connected | cv2.connectedComponents | cv.ConnectedComponents | match | labels canonicalised by first appearance, so only the partition is compared |
| ccstats-8-checker | connected | cv2.connectedComponentsWithStats | cv.ConnectedComponentsWithStats | mismatch | |
| cc-8-circles | connected | cv2.connectedComponents | cv.ConnectedComponents | match | labels canonicalised by first appearance, so only the partition is compared |
| ccstats-8-circles | connected | cv2.connectedComponentsWithStats | cv.ConnectedComponentsWithStats | match | |
| cc-8-all-zero | connected | cv2.connectedComponents | cv.ConnectedComponents | match | |
| cc-8-all-set | connected | cv2.connectedComponents | cv.ConnectedComponents | match | |
| ccstats-8-all-set | connected | cv2.connectedComponentsWithStats | cv.ConnectedComponentsWithStats | mismatch | no background pixels at all: cv2 reports a NaN background centroid |
| cc-3ch | connected | cv2.connectedComponents | cv.ConnectedComponents | match | multi-channel input must fail on both sides |
| findcontours-external-none-blobs | contours | cv2.findContours | cv.FindContours | match | counts, per-contour vertex counts, bounding rects and sorted point sets |
| findcontours-external-none-shapes | contours | cv2.findContours | cv.FindContours | match | counts, per-contour vertex counts, bounding rects and sorted point sets |
| findcontours-external-none-circles | contours | cv2.findContours | cv.FindContours | match | counts, per-contour vertex counts, bounding rects and sorted point sets |
| findcontours-external-none-checker | contours | cv2.findContours | cv.FindContours | match | counts, per-contour vertex counts, bounding rects and sorted point sets |
| findcontours-external-simple-blobs | contours | cv2.findContours | cv.FindContours | match | counts, per-contour vertex counts, bounding rects and sorted point sets |
| findcontours-external-simple-shapes | contours | cv2.findContours | cv.FindContours | match | counts, per-contour vertex counts, bounding rects and sorted point sets |
| findcontours-external-simple-circles | contours | cv2.findContours | cv.FindContours | match | counts, per-contour vertex counts, bounding rects and sorted point sets |
| findcontours-external-simple-checker | contours | cv2.findContours | cv.FindContours | match | counts, per-contour vertex counts, bounding rects and sorted point sets |
| findcontours-list-none-blobs | contours | cv2.findContours | cv.FindContours | match | counts, per-contour vertex counts, bounding rects and sorted point sets |
| findcontours-list-none-shapes | contours | cv2.findContours | cv.FindContours | match | counts, per-contour vertex counts, bounding rects and sorted point sets |
| findcontours-list-none-circles | contours | cv2.findContours | cv.FindContours | match | counts, per-contour vertex counts, bounding rects and sorted point sets |
| findcontours-list-none-checker | contours | cv2.findContours | cv.FindContours | match | counts, per-contour vertex counts, bounding rects and sorted point sets |
| findcontours-list-simple-blobs | contours | cv2.findContours | cv.FindContours | match | counts, per-contour vertex counts, bounding rects and sorted point sets |
| findcontours-list-simple-shapes | contours | cv2.findContours | cv.FindContours | match | counts, per-contour vertex counts, bounding rects and sorted point sets |
| findcontours-list-simple-circles | contours | cv2.findContours | cv.FindContours | match | counts, per-contour vertex counts, bounding rects and sorted point sets |
| findcontours-list-simple-checker | contours | cv2.findContours | cv.FindContours | match | counts, per-contour vertex counts, bounding rects and sorted point sets |
| findcontours-tree-none-blobs | contours | cv2.findContours | cv.FindContours | match | counts, per-contour vertex counts, bounding rects and sorted point sets |