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 objdetect, aruco, and bgsegm 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).
Two of the items below were initially reported as "already wrapped" by an early research pass; direct verification (grep over src/OpenCvSharp/Modules/) confirmed they do not exist — they're listed as real gaps below.
mcc (Macbeth color-checker detection, mcc_checker_detector.hpp) also surfaced as a candidate under objdetect, but cmake/opencv_build_options.cmake explicitly sets BUILD_opencv_mcc OFF — it isn't compiled into this project's native build, so it is excluded here rather than listed as a gap. (Re-evaluate only if the build config changes.)
Gaps by module
objdetect — CascadeClassifier/HOGDescriptor/QRCodeDetector core is solid; two whole classes were missed (4 items)
FaceRecognizerSF (objdetect/face.hpp:122) — face recognition/embedding model (create/feature/match/alignCrop); completely absent despite FaceDetectorYN being wrapped — corrected finding, confirmed missing — medium
QRCodeEncoder + Params (objdetect.hpp:152) — no encoder counterpart to the decoder side — corrected finding, confirmed missing — medium
QRCodeDetectorAruco + Params (objdetect.hpp:268) — Aruco-based QR detector variant — medium
estimateChessboardSharpness (objdetect.hpp:495) — sharpness metric for detected chessboard corners — small
CirclesGridFinderParameters (objdetect.hpp:518) — params struct for findCirclesGrid; no way to pass custom finder params today — small-medium
aruco — CharucoBoard/CharucoDetector work, but the base Board type and most of ArucoDetector's own surface are missing (cross-checked independently 3×) (4 items)
Board / GridBoard (aruco_board.hpp:25,107) — base board class (matchImagePoints/getObjPoints/getIds/generateImage) and plain grid-of-markers board; neither exists — CharucoBoard doesn't derive from anything today — medium
ArucoDetector — most of the class (aruco_detector.hpp:300-453) — only the single-dictionary constructor and DetectMarkers exist. Missing: RefineDetectedMarkers (native bridge already exists, just no C# caller), DetectMarkersWithConfidence, DetectMarkersMultiDict, multi-dict constructor, Get/SetDictionary(ies), Get/SetDetectorParameters, Get/SetRefineParameters, read/write — large
Dictionary gaps (aruco_dictionary.hpp:36-155) — missing constructors (default, Dictionary(Mat,int,int)), instance ReadDictionary/WriteDictionary, GetMarkerBits, the extendDictionary free function, and a getPredefinedDictionary(int) overload — medium
CharucoBoard/CharucoDetector accessors (aruco_board.hpp:167-175, charuco_detector.hpp:51-61) — GetChessboardCorners, GetNearestMarkerIdx/Corners, and CharucoDetector's Get/SetBoard/Get-SetCharucoParameters/Get-SetDetectorParameters/Get-SetRefineParameters are missing — medium
bgsegm — only MOG and GMG exist; 4 of 6 background subtractors are missing entirely, native side included (4 items)
BackgroundSubtractorCNT + createBackgroundSubtractorCNT (bgsegm.hpp:250,310) — counting-based subtractor — medium
BackgroundSubtractorGSOC + createBackgroundSubtractorGSOC (bgsegm.hpp:325,375) — GSOC algorithm — medium
BackgroundSubtractorLSBP + BackgroundSubtractorLSBPDesc + createBackgroundSubtractorLSBP (bgsegm.hpp:337,349,395) — LSBP algorithm plus its static descriptor helper — medium
LSBPCameraMotionCompensation enum (bgsegm.hpp:316) — used by the GSOC/LSBP factories above — small
barcode — nearly complete, two small gaps (2 items)
GetDownsamplingThreshold/GetDetectorScales/GetGradientThreshold (barcode.hpp:71,87,102) — only setters are wrapped (native bridge also lacks the getters) — small
DecodeWithType (barcode.hpp:49) — native bridge already has barcode_BarcodeDetector_decodeWithType, but no C# method calls it — 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
objdetect,aruco, andbgsegmOpenCV 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).Baseline:
opencv@40738fb,opencv_contrib@755e506(both pinned submodule commits onmain).Corrections found during verification
Two of the items below were initially reported as "already wrapped" by an early research pass; direct verification (
grepoversrc/OpenCvSharp/Modules/) confirmed they do not exist — they're listed as real gaps below.mcc(Macbeth color-checker detection,mcc_checker_detector.hpp) also surfaced as a candidate underobjdetect, butcmake/opencv_build_options.cmakeexplicitly setsBUILD_opencv_mcc OFF— it isn't compiled into this project's native build, so it is excluded here rather than listed as a gap. (Re-evaluate only if the build config changes.)Gaps by module
objdetect — CascadeClassifier/HOGDescriptor/QRCodeDetector core is solid; two whole classes were missed (4 items)
FaceRecognizerSF(objdetect/face.hpp:122) — face recognition/embedding model (create/feature/match/alignCrop); completely absent despiteFaceDetectorYNbeing wrapped — corrected finding, confirmed missing — mediumQRCodeEncoder+Params(objdetect.hpp:152) — no encoder counterpart to the decoder side — corrected finding, confirmed missing — mediumQRCodeDetectorAruco+Params(objdetect.hpp:268) — Aruco-based QR detector variant — mediumestimateChessboardSharpness(objdetect.hpp:495) — sharpness metric for detected chessboard corners — smallCirclesGridFinderParameters(objdetect.hpp:518) — params struct forfindCirclesGrid; no way to pass custom finder params today — small-mediumaruco — CharucoBoard/CharucoDetector work, but the base Board type and most of ArucoDetector's own surface are missing (cross-checked independently 3×) (4 items)
Board/GridBoard(aruco_board.hpp:25,107) — base board class (matchImagePoints/getObjPoints/getIds/generateImage) and plain grid-of-markers board; neither exists —CharucoBoarddoesn't derive from anything today — mediumArucoDetector— most of the class (aruco_detector.hpp:300-453) — only the single-dictionary constructor andDetectMarkersexist. Missing:RefineDetectedMarkers(native bridge already exists, just no C# caller),DetectMarkersWithConfidence,DetectMarkersMultiDict, multi-dict constructor,Get/SetDictionary(ies),Get/SetDetectorParameters,Get/SetRefineParameters,read/write— largearuco_dictionary.hpp:36-155) — missing constructors (default,Dictionary(Mat,int,int)), instanceReadDictionary/WriteDictionary,GetMarkerBits, theextendDictionaryfree function, and agetPredefinedDictionary(int)overload — mediumCharucoBoard/CharucoDetectoraccessors (aruco_board.hpp:167-175,charuco_detector.hpp:51-61) —GetChessboardCorners,GetNearestMarkerIdx/Corners, andCharucoDetector'sGet/SetBoard/Get-SetCharucoParameters/Get-SetDetectorParameters/Get-SetRefineParametersare missing — mediumbgsegm — only MOG and GMG exist; 4 of 6 background subtractors are missing entirely, native side included (4 items)
BackgroundSubtractorCNT+createBackgroundSubtractorCNT(bgsegm.hpp:250,310) — counting-based subtractor — mediumBackgroundSubtractorGSOC+createBackgroundSubtractorGSOC(bgsegm.hpp:325,375) — GSOC algorithm — mediumBackgroundSubtractorLSBP+BackgroundSubtractorLSBPDesc+createBackgroundSubtractorLSBP(bgsegm.hpp:337,349,395) — LSBP algorithm plus its static descriptor helper — mediumSyntheticSequenceGenerator+createSyntheticSequenceGenerator(bgsegm.hpp:402,436) — test-sequence generatorAlgorithmsubclass — small-mediumLSBPCameraMotionCompensationenum (bgsegm.hpp:316) — used by the GSOC/LSBP factories above — smallbarcode — nearly complete, two small gaps (2 items)
GetDownsamplingThreshold/GetDetectorScales/GetGradientThreshold(barcode.hpp:71,87,102) — only setters are wrapped (native bridge also lacks the getters) — smallDecodeWithType(barcode.hpp:49) — native bridge already hasbarcode_BarcodeDetector_decodeWithType, but no C# method calls it — 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.