Repository navigation
OpenCV 5.x API coverage: face, img_hash, line_descriptor gaps #2014
Description
Summary
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)
Confirmed already covered: BasicFaceRecognizer/EigenFaceRecognizer/FisherFaceRecognizer/LBPHFaceRecognizer, Facemark, FacemarkLBF (with Params), FacemarkAAM (with Params).
-
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 ownParams,training,setFaceDetector,getFaces— large -
PredictCollector/StandardCollector(predict_collector.hpp:61,82) — result-collection strategy forFaceRecognizer::predict_collect— medium -
FacemarkTrainbase class (facemark_train.hpp:256) — trainable-facemark base (addTrainingSample/training/setFaceDetector/getFaces/getData); C#Facemarkonly exposesLoadModel/Fit— large - Dataset/training utility free functions (
facemark_train.hpp:70-226):getFacesHAAR,loadDatasetList,loadTrainingData(3 overloads),loadFacePoints,drawFacemarks— small each -
FacemarkAAM.FitConfig+Configstruct (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, withEDLineParam— medium -
drawLineMatches/drawKeylines+DrawLinesMatchesFlagsenum (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.
Activity