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 video (core), tracking (contrib), and optflow (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).
video / tracking — modern DNN trackers and the whole legacy tracker family are unwrapped (9 items)
TrackerDaSiamRPN + Params (video/tracking.hpp:985-1020) — modern DNN-based tracker; not bridged or wrapped anywhere — medium
TrackerNano + Params (video/tracking.hpp:1030-1063) — lightweight DNN tracker; not bridged/wrapped — medium
TrackerVit + Params (video/tracking.hpp:1071-1109) — lightweight ViT tracker; not bridged/wrapped — medium
Note: TrackerGOTURN was removed from OpenCV entirely in 5.x — nothing to wrap there.
Tracker.GetTrackingScore() (video/tracking.hpp:941) — missing on the wrapped base Tracker class — small
legacy:: tracker family (tracking_legacy.hpp:72-490, opencv_contrib) — TrackerMIL/Boosting/MedianFlow/TLD/KCF/MOSSE/CSRT entirely unbridged; only the modern (non-legacy) TrackerCSRT/TrackerKCF/TrackerMIL exist today — large
legacy::MultiTracker/MultiTracker_Alt/MultiTrackerTLD (tracking_legacy.hpp:312-454) — multi-object tracking wrapper, not present anywhere — medium
legacy::upgradeTrackingAPI (tracking_legacy.hpp:490) — converts a legacy tracker to modern Ptr<Tracker>; only relevant if legacy trackers get wrapped — small
TrackerKCF.MODE enum + setFeatureExtractor callback (opencv_contrib tracking.hpp:105-111,144-145) — custom feature-extractor callback API not exposed — small
DISOpticalFlow/VariationalRefinement OOP classes (video/tracking.hpp:701-880) — dense/variational optical flow classes missing on the video side (only free-function forms exist elsewhere) — medium
FarnebackOpticalFlow/SparsePyrLKOpticalFlow OOP create() form (video/tracking.hpp:653-908) — only free-function/superres-bound variants are wrapped — small
findTransformECCWithMask/findTransformECCMultiScale + ECCParameters (video/tracking.hpp:422-511) — new OpenCV-5 ECC alignment additions — small
readOpticalFlow/writeOpticalFlow (video/tracking.hpp:591,601) — .flo file I/O helpers — small
Also flagged (cleanup, not a gap): OpenCvSharp.Tracking.TrackerTypes (src/OpenCvSharp/Modules/tracking/Enum/TrackerTypes.cs) is a stale enum from a pre-legacy-split API that doesn't map to any current factory — consider removing/repurposing once the legacy trackers land, or separately.
Internal, not user-facing (skip): feature.hpp's TrackerContribSamplerCSC/TrackerContribFeatureHAAR/TrackerStateEstimatorMILBoosting are CV_EXPORTS_W but not CV_WRAP'd — no bindable methods.
optflow — only motion-template + calcOpticalFlowSF/SparseToDense are wrapped; four algorithm families missing (5 items)
Real cv::optflow::DualTVL1OpticalFlow (optflow.hpp:218) — naming collision, not just a gap: the existing C# DualTVL1OpticalFlow class actually binds to the cv::superres:: native functions, not cv::optflow::. The true cv::optflow::DualTVL1OpticalFlow/createOptFlow_DualTVL1 is unwrapped — medium
createOptFlow_DeepFlow/SimpleFlow/Farneback/SparseToDense factories (optflow.hpp:165-174) — none exposed via Cv2.OptFlow — small
OpticalFlowPCAFlow + PCAPrior + createOptFlow_PCAFlow (pcaflow.hpp:74,94,142) — entire PCAFlow API missing — medium
RLOF family: RLOFOpticalFlowParameter, DenseRLOFOpticalFlow, SparseRLOFOpticalFlow, calcOpticalFlowDenseRLOF/SparseRLOF, createOptFlow_DenseRLOF/SparseRLOF (rlofflow.hpp:64,233,412,501,538,545,548) — entire RLOF API missing — large
GPCTrainingSamples/GPCTree/GPCForest/GPCDetails (sparse_matching_gpc.hpp:98,154,~230,301) — Global Patch Collider, template-heavy; entirely missing — large
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
video(core),tracking(contrib), andoptflow(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).Baseline:
opencv@40738fb,opencv_contrib@755e506(both pinned submodule commits onmain).Gaps
video / tracking — modern DNN trackers and the whole legacy tracker family are unwrapped (9 items)
TrackerDaSiamRPN+Params(video/tracking.hpp:985-1020) — modern DNN-based tracker; not bridged or wrapped anywhere — mediumTrackerNano+Params(video/tracking.hpp:1030-1063) — lightweight DNN tracker; not bridged/wrapped — mediumTrackerVit+Params(video/tracking.hpp:1071-1109) — lightweight ViT tracker; not bridged/wrapped — mediumTrackerGOTURNwas removed from OpenCV entirely in 5.x — nothing to wrap there.Tracker.GetTrackingScore()(video/tracking.hpp:941) — missing on the wrapped baseTrackerclass — smalllegacy::tracker family (tracking_legacy.hpp:72-490, opencv_contrib) —TrackerMIL/Boosting/MedianFlow/TLD/KCF/MOSSE/CSRTentirely unbridged; only the modern (non-legacy)TrackerCSRT/TrackerKCF/TrackerMILexist today — largelegacy::MultiTracker/MultiTracker_Alt/MultiTrackerTLD(tracking_legacy.hpp:312-454) — multi-object tracking wrapper, not present anywhere — mediumlegacy::upgradeTrackingAPI(tracking_legacy.hpp:490) — converts a legacy tracker to modernPtr<Tracker>; only relevant if legacy trackers get wrapped — smallTrackerKCF.MODEenum +setFeatureExtractorcallback (opencv_contribtracking.hpp:105-111,144-145) — custom feature-extractor callback API not exposed — smallDISOpticalFlow/VariationalRefinementOOP classes (video/tracking.hpp:701-880) — dense/variational optical flow classes missing on thevideoside (only free-function forms exist elsewhere) — mediumFarnebackOpticalFlow/SparsePyrLKOpticalFlowOOPcreate()form (video/tracking.hpp:653-908) — only free-function/superres-bound variants are wrapped — smallfindTransformECCWithMask/findTransformECCMultiScale+ECCParameters(video/tracking.hpp:422-511) — new OpenCV-5 ECC alignment additions — smallreadOpticalFlow/writeOpticalFlow(video/tracking.hpp:591,601) —.flofile I/O helpers — smallBackgroundSubtractor.Applymask overload (background_segm.hpp:87) —apply(image, knownForegroundMask, fgmask, learningRate)missing — smallAlso flagged (cleanup, not a gap):
OpenCvSharp.Tracking.TrackerTypes(src/OpenCvSharp/Modules/tracking/Enum/TrackerTypes.cs) is a stale enum from a pre-legacy-split API that doesn't map to any current factory — consider removing/repurposing once the legacy trackers land, or separately.Internal, not user-facing (skip):
feature.hpp'sTrackerContribSamplerCSC/TrackerContribFeatureHAAR/TrackerStateEstimatorMILBoostingareCV_EXPORTS_Wbut notCV_WRAP'd — no bindable methods.optflow — only motion-template + calcOpticalFlowSF/SparseToDense are wrapped; four algorithm families missing (5 items)
cv::optflow::DualTVL1OpticalFlow(optflow.hpp:218) — naming collision, not just a gap: the existing C#DualTVL1OpticalFlowclass actually binds to thecv::superres::native functions, notcv::optflow::. The truecv::optflow::DualTVL1OpticalFlow/createOptFlow_DualTVL1is unwrapped — mediumcreateOptFlow_DeepFlow/SimpleFlow/Farneback/SparseToDensefactories (optflow.hpp:165-174) — none exposed viaCv2.OptFlow— smallOpticalFlowPCAFlow+PCAPrior+createOptFlow_PCAFlow(pcaflow.hpp:74,94,142) — entire PCAFlow API missing — mediumRLOFOpticalFlowParameter,DenseRLOFOpticalFlow,SparseRLOFOpticalFlow,calcOpticalFlowDenseRLOF/SparseRLOF,createOptFlow_DenseRLOF/SparseRLOF(rlofflow.hpp:64,233,412,501,538,545,548) — entire RLOF API missing — largeGPCTrainingSamples/GPCTree/GPCForest/GPCDetails(sparse_matching_gpc.hpp:98,154,~230,301) — Global Patch Collider, template-heavy; entirely missing — largeNotes
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.