opencv 0.46.2

Rust bindings for OpenCV
Documentation
use std::path::PathBuf;

use opencv::{
    core::Size,
    features2d::{Feature2DTrait, ORB},
    imgcodecs,
    prelude::*,
    Result,
    types::{PtrOfORB, VectorOfKeyPoint}
};

#[test]
fn orb() -> Result<()> {
    let blox_path = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("tests/blox.jpg");
    let img = imgcodecs::imread(blox_path.to_str().unwrap(), imgcodecs::IMREAD_COLOR)?;
    let mut orb: PtrOfORB = ORB::default()?;
    let mut kp = VectorOfKeyPoint::new();
    let mut des = Mat::default()?;
    orb.detect_and_compute(&img, &Mat::default()?, &mut kp, &mut des, false)?;
    let size = if cfg!(feature = "opencv-32") { 296 } else { 290 };
    assert_eq!(size, kp.len());
    assert_eq!(Size::new(32, size as i32), des.size()?);
    Ok(())
}