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 face, img_hash, and line_descriptor (all opencv_contrib) OpenCV 5.x C++ API surface against the current OpenCvSharp C# wrapper. Part of a broader coverage sweep that started from closing the geometry/segment.hpp gap (#2000/#2001). Findings cross-checked independently 3 times.
Baseline: opencv_contrib @ 755e506 (pinned submodule commit on main).
Gaps by module
face — FaceRecognizer family and FacemarkLBF/AAM are solid; three whole algorithm families and the training pipeline are missing (7 items)
BIF (bif.hpp:57) — Bio-Inspired Features descriptor for age estimation (create/getNumBands/getNumRotations/compute) — medium
MACE (mace.hpp:71) — Minimum Average Correlation Energy filter for face verification (create/train/same/salt/load) — medium
FacemarkKazemi + createFacemarkKazemi() (face_alignment.hpp:11, facemark.hpp:85) — third facemark backend (only AAM/LBF exist today); has its own Params, training, setFaceDetector, getFaces — large
PredictCollector/StandardCollector (predict_collector.hpp:61,82) — result-collection strategy for FaceRecognizer::predict_collect — medium
FacemarkTrain base class (facemark_train.hpp:256) — trainable-facemark base (addTrainingSample/training/setFaceDetector/getFaces/getData); C# Facemark only exposes LoadModel/Fit — large
Dataset/training utility free functions (facemark_train.hpp:70-226): getFacesHAAR, loadDatasetList, loadTrainingData (3 overloads), loadFacePoints, drawFacemarks — small each
FacemarkAAM.FitConfig + Config struct (facemarkAAM.hpp:80,149) — fit overload with per-instance runtime rotation/translation/scale config — medium
img_hash — classes fully wrapped; only the one-shot convenience functions are missing (6 items)
averageHash (average_hash.hpp:33) — small
blockMeanHash (block_mean_hash.hpp:44) — small
colorMomentHash (color_moment_hash.hpp:35) — small
marrHildrethHash (marr_hildreth_hash.hpp:56) — small
pHash (phash.hpp:35) — small
radialVarianceHash (radial_variance_hash.hpp:48) — small
Each is a one-call free-function wrapper for an already-fully-wrapped Algorithm class's create()+compute() — trivial native bridge + thin C# wrapper.
line_descriptor — only LSDDetector made it in (#1996); the module's namesake matching pipeline is entirely unwrapped (4 items)
BinaryDescriptor (descriptor.hpp:182-290) — LBD line descriptor algorithm (Params, createBinaryDescriptor, octave/band/reduction accessors, detect, compute) — large
BinaryDescriptorMatcher (descriptor.hpp:1019-1074) — matcher for binary line descriptors (match/matchQuery/knnMatch/knnMatchQuery/add/train) — large
EDLineDetector (descriptor.hpp:437-488) — Edge-Drawing based line segment detector, with EDLineParam — medium
drawLineMatches/drawKeylines + DrawLinesMatchesFlags enum (descriptor.hpp:1357,1388,1401) — drawing helpers for the classes above — small
Notes
Effort tags: small = a native bridge function/property + thin C# wrapper; medium = a small class or multi-member accessor set; large = a substantial class or multi-class family.
Summary
Audit of the
face,img_hash, andline_descriptor(all opencv_contrib) OpenCV 5.x C++ API surface against the current OpenCvSharp C# wrapper. Part of a broader coverage sweep that started from closing thegeometry/segment.hppgap (#2000/#2001). Findings cross-checked independently 3 times.Baseline:
opencv_contrib@755e506(pinned submodule commit onmain).Gaps by module
face — FaceRecognizer family and FacemarkLBF/AAM are solid; three whole algorithm families and the training pipeline are missing (7 items)
Confirmed already covered:
BasicFaceRecognizer/EigenFaceRecognizer/FisherFaceRecognizer/LBPHFaceRecognizer,Facemark,FacemarkLBF(withParams),FacemarkAAM(withParams).BIF(bif.hpp:57) — Bio-Inspired Features descriptor for age estimation (create/getNumBands/getNumRotations/compute) — mediumMACE(mace.hpp:71) — Minimum Average Correlation Energy filter for face verification (create/train/same/salt/load) — mediumFacemarkKazemi+createFacemarkKazemi()(face_alignment.hpp:11,facemark.hpp:85) — third facemark backend (only AAM/LBF exist today); has its ownParams,training,setFaceDetector,getFaces— largePredictCollector/StandardCollector(predict_collector.hpp:61,82) — result-collection strategy forFaceRecognizer::predict_collect— mediumFacemarkTrainbase class (facemark_train.hpp:256) — trainable-facemark base (addTrainingSample/training/setFaceDetector/getFaces/getData); C#Facemarkonly exposesLoadModel/Fit— largefacemark_train.hpp:70-226):getFacesHAAR,loadDatasetList,loadTrainingData(3 overloads),loadFacePoints,drawFacemarks— small eachFacemarkAAM.FitConfig+Configstruct (facemarkAAM.hpp:80,149) — fit overload with per-instance runtime rotation/translation/scale config — mediumimg_hash — classes fully wrapped; only the one-shot convenience functions are missing (6 items)
averageHash(average_hash.hpp:33) — smallblockMeanHash(block_mean_hash.hpp:44) — smallcolorMomentHash(color_moment_hash.hpp:35) — smallmarrHildrethHash(marr_hildreth_hash.hpp:56) — smallpHash(phash.hpp:35) — smallradialVarianceHash(radial_variance_hash.hpp:48) — smallEach is a one-call free-function wrapper for an already-fully-wrapped
Algorithmclass'screate()+compute()— trivial native bridge + thin C# wrapper.line_descriptor — only LSDDetector made it in (#1996); the module's namesake matching pipeline is entirely unwrapped (4 items)
BinaryDescriptor(descriptor.hpp:182-290) — LBD line descriptor algorithm (Params,createBinaryDescriptor, octave/band/reduction accessors,detect,compute) — largeBinaryDescriptorMatcher(descriptor.hpp:1019-1074) — matcher for binary line descriptors (match/matchQuery/knnMatch/knnMatchQuery/add/train) — largeEDLineDetector(descriptor.hpp:437-488) — Edge-Drawing based line segment detector, withEDLineParam— mediumdrawLineMatches/drawKeylines+DrawLinesMatchesFlagsenum (descriptor.hpp:1357,1388,1401) — drawing helpers for the classes above — smallNotes
Effort tags: small = a native bridge function/property + thin C# wrapper; medium = a small class or multi-member accessor set; large = a substantial class or multi-class family.