Skip to content

Commit 56fc69f

Browse files
committed
unit: a failing unit test to feature2d::BFMatcher
1 parent e6028ff commit 56fc69f

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

tests/features2d.rs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,42 @@ fn orb() -> Result<()> {
2020
assert_eq!(Size::new(32, size as i32), des.size()?);
2121
Ok(())
2222
}
23+
24+
25+
/// cargo test --package opencv --test features2d -- orb_bruteforce_match --exact --nocapture
26+
#[test]
27+
fn orb_bruteforce_match() -> Result<()> {
28+
let blox_path = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("tests/blox.jpg");
29+
let img_a = imgcodecs::imread(blox_path.to_str().unwrap(), imgcodecs::IMREAD_GRAYSCALE)?;
30+
let img_b = img_a.clone(); // yep this is the same
31+
32+
let mut orb = features2d::ORB::default()?;
33+
let mut kp_a = VectorOfKeyPoint::new();
34+
let mut des_a = Mat::default();
35+
orb.detect_and_compute(&img_a, &Mat::default(), &mut kp_a, &mut des_a, false)?;
36+
37+
let mut kp_b = VectorOfKeyPoint::new();
38+
let mut des_b = Mat::default();
39+
orb.detect_and_compute(&img_b, &Mat::default(), &mut kp_b, &mut des_b, false)?;
40+
41+
42+
let size = 290;
43+
assert_eq!(size, kp_a.len());
44+
assert_eq!(Size::new(32, size as i32), des_a.size()?);
45+
assert_eq!(size, kp_b.len());
46+
assert_eq!(Size::new(32, size as i32), des_b.size()?);
47+
48+
let mut bf_matcher = features2d::BFMatcher::create(NORM_HAMMING, true).unwrap();
49+
50+
// Match descriptors
51+
let mut query_descriptors: Vector<Mat> = Vector::new();
52+
query_descriptors.push(des_a);
53+
query_descriptors.push(des_b);
54+
55+
let mut matches = opencv::types::VectorOfDMatch::new();
56+
bf_matcher.match_(&query_descriptors, &mut matches, &no_array()).unwrap();
57+
58+
assert_ne!(matches.len(), 0); // expected many matches since images are equal
59+
println!("Match {:?}", matches);
60+
Ok(())
61+
}

0 commit comments

Comments
 (0)