Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

doc(features2d): OpenCV 4.10.0 parity audit of the features2d module

Open
#175 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
35/100
Issue type
Documentation
Clarity
Clearly specified
Activity status
Active
Tech stack
javascript, opencv, python, rust

Research direction

Wait for task B0 to establish the audit method, then read docs/parity/README.md, the B3 plan, CONTRIBUTING.md, and cpp_ref/AGENTS.md. Start by regenerating the features2d inventory at the base and measuring the listed priority rows with the pinned OpenCV 4.10.0 environment or opencv.js. Done means every public item has a status, divergences link issues, priority rows have reproducible evidence, and the listed Rust checks pass.

Written by the indexing model from the issue text.

Description

documentation features2D-module

Part of the parity audit umbrella (#172). Follow-up of #165.

Deliverable: docs/parity/features2d.md, written with the audit method in docs/parity/README.md (procedure S1–S7, dimensions D1–D7, the six statuses). That method is created by task B0 of the plan, so wait for B0 before starting.
Reference: OpenCV 4.10.0. See CONTRIBUTING.md#opencv-reference-version and cpp_ref/AGENTS.md. Read sources only from the bootstrapped cpp_ref/src/opencv (and cpp_ref/src/opencv_contrib). Measure only with cpp_ref/.venv (opencv-contrib-python==4.10.0.84, IPP off) or the pinned opencv.js.
Plan section: Task B3: features2d

Audit PRs change no library code. They may add only the following:

  • docs/parity/;
  • reference scripts under scripts/opencv_ref/;
  • passing tests that pin rows which already match OpenCV;
  • #[ignore]d tests for divergences.

Every divergence found gets its own issue.


OpenCV 4.10.0:

  • doc pages: features2d main, draw, KeyPoint, BFMatcher;
  • sources: modules/features2d/src/{orb,fast,matchers,draw,keypoint}.cpp and modules/core/src/types.cpp;
  • contrib: cpp_ref/src/opencv_contrib/modules/xfeatures2d at 1ed3dd2c….

Inventory (indicative, regenerate at the base; #162 changed orb.rs):

  • Orb: params, detect, compute, detect_and_compute, pyramid helpers, compute_orientation, compute_orb_descriptor, precompute_umax
  • FastFeatureDetector
  • KeyPoint (convert_*, overlap), retain_best, sort_by_response
  • BFMatcher, DMatch, NormType, DescriptorMatcher, DescriptorDistance
  • filter_matches (ratio test)
  • draw_keypoints, draw_matches
  • BIT_PATTERN_31

Seeded rows:

  • Fixed on dev by #162 (closing at the next release): #123, #124, #125, #126, #136, #156.
    • ORB compute is measured via test_orb_compute_matches_opencv_reference / orb_opencv_ref.rs, but only once its generator records the opencv.js build (follow-up below). Until then it is inspected.
    • #136: cite the FAST guard test.
  • Open ORB divergences: #158 (Harris scoring), #159 (split a–e), #160 (split a–c). Their evidence is issue comments from an unidentified opencv.js 4.10.0 build, so they are diverges with that evidence linked, until a committed script reproduces them.
  • FAST: #161, split a–d. Type9_16 + nonmax matches according to #161, so it stays inspected until S3 measures it.
  • filter_matches → purecv-only. KeyPoint placement → see B1.

Priority rows (S3):

  • FAST Type9_16 + nonmax vs cv2.FastFeatureDetector_create (thresholds 0/10/20/40)
  • ORB detect_and_compute keypoint overlap vs cv2.ORB_create()
  • BFMatcher: Hamming / L2 distances, cross_check tie order, knn_match ordering
  • draw_* colours and default flags

Follow-up (separate PR, chore(features2d), after approval):

  • Make scripts/opencv_ref/gen_orb_descriptors.js default OPENCV_JS to cpp_ref/node_modules/@techstark/opencv-js/dist/opencv.js, and write the Version control: line into the fixture header.
  • Regenerate. If the descriptors differ from the self-built build, record that as a finding rather than overwriting silently.

missing rows:

  • main repo: AGAST, AKAZE/KAZE, BRISK, SIFT (in the main repo since 4.4), MSER, SimpleBlobDetector, a GFTT detector wrapper, FlannBasedMatcher;
  • opencv_contrib xfeatures2d @1ed3dd2c: GMS (#101), TEBLID (#102), FREAK (#103), StarDetector (#104). The cpp_ref/.venv wheel includes their free implementations.

Existing issues: #158, #159, #160, #161 (open); #123–#126, #136, #156 (fixed on dev); #101–#104 (contrib requests).


Done when
  • every public item of the module has a row with one of the six statuses;
  • every diverges row links an issue;
  • every priority row is measured with reproducible evidence, or is diverges with a script or an #[ignore]d test;
  • cargo fmt --check, cargo clippy -- -D warnings and cargo test pass (the guard also scans docs/parity/*.md).
Dominant language
Rust
Stars
29
Forks
1
Avg merge
1d 3h
Merged PRs (30d)
16

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from webarkit/purecv

All issues in webarkit/purecv

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.