You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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, TransverseMercator — large
Blender family (stitching/detail/blenders.hpp) — Blender, FeatherBlender, MultiBandBlender + free functions normalizeUsingWeightMap/createWeightMap/createLaplacePyr/restoreImageFromLaplacePyr — large
ExposureCompensator family (stitching/detail/exposure_compensate.hpp) — 7 classes: ExposureCompensator base, NoExposureCompensator, GainCompensator, ChannelsCompensator, BlocksCompensator, BlocksGainCompensator, BlocksChannelsCompensator — large
SeamFinder family (stitching/detail/seam_finders.hpp) — SeamFinder base, NoSeamFinder, PairwiseSeamFinder, VoronoiSeamFinder, DpSeamFinder, GraphCutSeamFinder — large
Estimator/BundleAdjuster family (stitching/detail/motion_estimators.hpp) — Estimator base, HomographyBasedEstimator, AffineBasedEstimator, BundleAdjusterBase, NoBundleAdjuster, BundleAdjusterReproj, BundleAdjusterRay, BundleAdjusterAffine, BundleAdjusterAffinePartial — large
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).
Summary
Audit of the
stitchingmodule'sdetail::namespace (OpenCV 5.x) against the current OpenCvSharp C# wrapper. Part of a broader coverage sweep that started from closing thegeometry/segment.hppgap (#2000/#2001).Baseline:
opencv@40738fb(pinned submodule commit onmain).Context
The high-level
Stitcherclass (src/OpenCvSharp/Modules/stitching/Stitcher.cs) covers the common panorama-stitching path end to end, andFeaturesMatcher/BestOf2NearestMatcher/AffineBestOf2NearestMatcher/ImageFeatures/MatchesInfoare already wrapped (Cv2.Detail.cs). Its internaldetail::namespace — the pieces you'd swap out to build a custom stitching pipeline — is largely unwrapped. This is similar in spirit todnn'sLayerorml'sTrainData(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)
stitching/warpers.hpp) —PyRotationWarper/WarperCreatorbase plus ~12 concrete warpers:Plane,Affine,Cylindrical,Spherical,Fisheye,Stereographic,CompressedRectilinear(Portrait),Panini(Portrait),Mercator,TransverseMercator— largestitching/detail/blenders.hpp) —Blender,FeatherBlender,MultiBandBlender+ free functionsnormalizeUsingWeightMap/createWeightMap/createLaplacePyr/restoreImageFromLaplacePyr— largestitching/detail/exposure_compensate.hpp) — 7 classes:ExposureCompensatorbase,NoExposureCompensator,GainCompensator,ChannelsCompensator,BlocksCompensator,BlocksGainCompensator,BlocksChannelsCompensator— largestitching/detail/seam_finders.hpp) —SeamFinderbase,NoSeamFinder,PairwiseSeamFinder,VoronoiSeamFinder,DpSeamFinder,GraphCutSeamFinder— largestitching/detail/motion_estimators.hpp) —Estimatorbase,HomographyBasedEstimator,AffineBasedEstimator,BundleAdjusterBase,NoBundleAdjuster,BundleAdjusterReproj,BundleAdjusterRay,BundleAdjusterAffine,BundleAdjusterAffinePartial— largeBestOf2NearestRangeMatcher/LightGlueFeaturesMatcher(stitching/detail/matchers.hpp) +Timelapser/TimelapserCrop(stitching/detail/timelapsers.hpp) — onlyBestOf2NearestMatcher/AffineBestOf2NearestMatcherexist among the matchers today — mediumNotes
camera.hpp(CameraParams, plain struct) was checked and has no additionalCV_EXPORTSclasses beyond what's already used internally. Effort tags: large = a substantial class family (multiple relatedAlgorithm-derived classes sharing a base).