#![allow(
unused_parens,
clippy::excessive_precision,
clippy::missing_safety_doc,
clippy::should_implement_trait,
clippy::too_many_arguments,
clippy::unused_unit,
clippy::let_unit_value,
clippy::derive_partial_eq_without_eq,
)]
use crate::{mod_prelude::*, core, sys, types};
pub mod prelude {
pub use { super::BarcodeDetectorTraitConst, super::BarcodeDetectorTrait };
}
pub const EAN_13: i32 = 2;
pub const EAN_8: i32 = 1;
pub const NONE: i32 = 0;
pub const UPC_A: i32 = 3;
pub const UPC_E: i32 = 4;
pub const UPC_EAN_EXTENSION: i32 = 5;
#[repr(C)]
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum BarcodeType {
NONE = 0,
EAN_8 = 1,
EAN_13 = 2,
UPC_A = 3,
UPC_E = 4,
UPC_EAN_EXTENSION = 5,
}
opencv_type_enum! { crate::barcode::BarcodeType }
pub trait BarcodeDetectorTraitConst {
fn as_raw_BarcodeDetector(&self) -> *const c_void;
#[inline]
fn detect(&self, img: &dyn core::ToInputArray, points: &mut dyn core::ToOutputArray) -> Result<bool> {
extern_container_arg!(img);
extern_container_arg!(points);
return_send!(via ocvrs_return);
unsafe { sys::cv_barcode_BarcodeDetector_detect_const_const__InputArrayR_const__OutputArrayR(self.as_raw_BarcodeDetector(), img.as_raw__InputArray(), points.as_raw__OutputArray(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
fn decode(&self, img: &dyn core::ToInputArray, points: &dyn core::ToInputArray, decoded_info: &mut core::Vector<String>, decoded_type: &mut core::Vector<crate::barcode::BarcodeType>) -> Result<bool> {
extern_container_arg!(img);
extern_container_arg!(points);
return_send!(via ocvrs_return);
unsafe { sys::cv_barcode_BarcodeDetector_decode_const_const__InputArrayR_const__InputArrayR_vectorLstringGR_vectorLBarcodeTypeGR(self.as_raw_BarcodeDetector(), img.as_raw__InputArray(), points.as_raw__InputArray(), decoded_info.as_raw_mut_VectorOfString(), decoded_type.as_raw_mut_VectorOfBarcodeType(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
fn detect_and_decode(&self, img: &dyn core::ToInputArray, decoded_info: &mut core::Vector<String>, decoded_type: &mut core::Vector<crate::barcode::BarcodeType>, points: &mut dyn core::ToOutputArray) -> Result<bool> {
extern_container_arg!(img);
extern_container_arg!(points);
return_send!(via ocvrs_return);
unsafe { sys::cv_barcode_BarcodeDetector_detectAndDecode_const_const__InputArrayR_vectorLstringGR_vectorLBarcodeTypeGR_const__OutputArrayR(self.as_raw_BarcodeDetector(), img.as_raw__InputArray(), decoded_info.as_raw_mut_VectorOfString(), decoded_type.as_raw_mut_VectorOfBarcodeType(), points.as_raw__OutputArray(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
}
pub trait BarcodeDetectorTrait: crate::barcode::BarcodeDetectorTraitConst {
fn as_raw_mut_BarcodeDetector(&mut self) -> *mut c_void;
}
pub struct BarcodeDetector {
ptr: *mut c_void
}
opencv_type_boxed! { BarcodeDetector }
impl Drop for BarcodeDetector {
fn drop(&mut self) {
extern "C" { fn cv_BarcodeDetector_delete(instance: *mut c_void); }
unsafe { cv_BarcodeDetector_delete(self.as_raw_mut_BarcodeDetector()) };
}
}
unsafe impl Send for BarcodeDetector {}
impl crate::barcode::BarcodeDetectorTraitConst for BarcodeDetector {
#[inline] fn as_raw_BarcodeDetector(&self) -> *const c_void { self.as_raw() }
}
impl crate::barcode::BarcodeDetectorTrait for BarcodeDetector {
#[inline] fn as_raw_mut_BarcodeDetector(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl BarcodeDetector {
#[inline]
pub fn new(prototxt_path: &str, model_path: &str) -> Result<crate::barcode::BarcodeDetector> {
extern_container_arg!(prototxt_path);
extern_container_arg!(model_path);
return_send!(via ocvrs_return);
unsafe { sys::cv_barcode_BarcodeDetector_BarcodeDetector_const_stringR_const_stringR(prototxt_path.opencv_as_extern(), model_path.opencv_as_extern(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::barcode::BarcodeDetector::opencv_from_extern(ret) };
Ok(ret)
}
}