Skip to content

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

Closed

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, 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.

Activity

  1. added
    enhancementNew feature or improvement to OpenCvSharp
    on Jul 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or improvement to OpenCvSharp

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions