Skip to content

OpenCV 5.x API coverage: stitching detail:: pipeline gaps #2016

Description

@shimat

Summary

Audit of the stitching module's detail:: namespace (OpenCV 5.x) against the current OpenCvSharp C# wrapper. Part of a broader coverage sweep that started from closing the geometry/segment.hpp gap (#2000/#2001).

Baseline: opencv @ 40738fb (pinned submodule commit on main).

Context

The high-level Stitcher class (src/OpenCvSharp/Modules/stitching/Stitcher.cs) covers the common panorama-stitching path end to end, and FeaturesMatcher/BestOf2NearestMatcher/AffineBestOf2NearestMatcher/ImageFeatures/MatchesInfo are already wrapped (Cv2.Detail.cs). Its internal detail:: namespace — the pieces you'd swap out to build a custom stitching pipeline — is largely unwrapped. This is similar in spirit to dnn's Layer or ml's TrainData (see the DNN & ML and Video & tracking coverage issues): plausibly a deliberate scope line rather than an oversight, but a real gap for anyone wanting fine-grained control over warping/blending/seam-finding.

Gaps

stitching::detail — five whole class families behind the Stitcher facade (6 items)
  • Warper family (stitching/warpers.hpp) — PyRotationWarper/WarperCreator base plus ~12 concrete warpers: Plane, Affine, Cylindrical, Spherical, Fisheye, Stereographic, CompressedRectilinear(Portrait), Panini(Portrait), Mercator, TransverseMercatorlarge
  • Blender family (stitching/detail/blenders.hpp) — Blender, FeatherBlender, MultiBandBlender + free functions normalizeUsingWeightMap/createWeightMap/createLaplacePyr/restoreImageFromLaplacePyrlarge
  • ExposureCompensator family (stitching/detail/exposure_compensate.hpp) — 7 classes: ExposureCompensator base, NoExposureCompensator, GainCompensator, ChannelsCompensator, BlocksCompensator, BlocksGainCompensator, BlocksChannelsCompensatorlarge
  • SeamFinder family (stitching/detail/seam_finders.hpp) — SeamFinder base, NoSeamFinder, PairwiseSeamFinder, VoronoiSeamFinder, DpSeamFinder, GraphCutSeamFinderlarge
  • Estimator/BundleAdjuster family (stitching/detail/motion_estimators.hpp) — Estimator base, HomographyBasedEstimator, AffineBasedEstimator, BundleAdjusterBase, NoBundleAdjuster, BundleAdjusterReproj, BundleAdjusterRay, BundleAdjusterAffine, BundleAdjusterAffinePartiallarge
  • BestOf2NearestRangeMatcher/LightGlueFeaturesMatcher (stitching/detail/matchers.hpp) + Timelapser/TimelapserCrop (stitching/detail/timelapsers.hpp) — only BestOf2NearestMatcher/AffineBestOf2NearestMatcher exist among the matchers today — medium

Notes

camera.hpp (CameraParams, plain struct) was checked and has no additional CV_EXPORTS classes beyond what's already used internally. Effort tags: large = a substantial class family (multiple related Algorithm-derived classes sharing a base).

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions