Skip to content

OpenCV 5.x API coverage: face, img_hash, line_descriptor gaps #2014

Description

@shimat

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 own Params, training, setFaceDetector, getFaceslarge
  • PredictCollector/StandardCollector (predict_collector.hpp:61,82) — result-collection strategy for FaceRecognizer::predict_collectmedium
  • FacemarkTrain base class (facemark_train.hpp:256) — trainable-facemark base (addTrainingSample/training/setFaceDetector/getFaces/getData); C# Facemark only exposes LoadModel/Fitlarge
  • Dataset/training utility free functions (facemark_train.hpp:70-226): getFacesHAAR, loadDatasetList, loadTrainingData (3 overloads), loadFacePoints, drawFacemarkssmall 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 EDLineParammedium
  • 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.

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