Skip to content

OpenCV 5.x: wrap rgbd module (linemod + KinFu family) #2018

Description

@shimat

Summary

opencv_contrib's rgbd module is not wrapped in OpenCvSharp at all, but compiles cleanly with the project's existing dependency set (needs opencv_geometry + opencv_ptcloud, both already wrapped; OpenGL/opencv_viz interop is optional-only). It's the single largest genuinely-buildable net-new module found during the OpenCV 5.x coverage audit that started from closing the geometry/segment.hpp gap (#2000/#2001), so it gets its own tracking issue rather than being folded into the smaller net-new-modules issue.

Baseline: opencv_contrib @ 755e506 (pinned submodule commit on main).

Surface

linemod — template-matching detection pipeline
  • linemod::Detector — the core template-matching detector (addTemplate, match, read/write, template persistence)
  • linemod::Modality + concrete modalities (ColorGradient, DepthNormal) — feature-extraction strategies the detector composes
KinFu volumetric-fusion family — 4 Algorithm-derived classes, each with a Params struct
  • kinfu::KinFu — the base real-time dense-SLAM reconstruction pipeline
  • dynafu::DynaFu — non-rigid (deformable-scene) variant
  • colored_kinfu::ColoredKinFu — color-aware variant
  • large_kinfu::LargeKinfu — large-scale-scene variant

Suggested approach

Same shape as the recently-wrapped ptcloud classes (VolumeSettings/Volume) — CvPtrObject-based algorithm-class pattern with a create() factory per class, per .github/copilot-instructions.md's "Adding a new OpenCV class wrapper" checklist. Given the size (5 classes total, each with a non-trivial Params struct), this is realistically a multi-PR effort:

  1. linemod::Detector + Modality family (smallest independent unit)
  2. kinfu::KinFu (the base/simplest volumetric class)
  3. dynafu::DynaFu / colored_kinfu::ColoredKinFu / large_kinfu::LargeKinfu (each shares most of its shape with KinFu, so these should go faster once the first one establishes the pattern)

Notes

Effort: large overall (multi-class family); each individual class is roughly medium-to-large on its own once the shared Params-struct pattern is established by the first PR.

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