pub mod text {
use crate::{mod_prelude::*, core, sys, types};
pub mod prelude {
pub use { super::ERStatTraitConst, super::ERStatTrait, super::ERFilter_CallbackTraitConst, super::ERFilter_CallbackTrait, super::ERFilterTraitConst, super::ERFilterTrait, super::BaseOCRTraitConst, super::BaseOCRTrait, super::OCRTesseractTraitConst, super::OCRTesseractTrait, super::OCRHMMDecoder_ClassifierCallbackTraitConst, super::OCRHMMDecoder_ClassifierCallbackTrait, super::OCRHMMDecoderTraitConst, super::OCRHMMDecoderTrait, super::OCRBeamSearchDecoder_ClassifierCallbackTraitConst, super::OCRBeamSearchDecoder_ClassifierCallbackTrait, super::OCRBeamSearchDecoderTraitConst, super::OCRBeamSearchDecoderTrait, super::OCRHolisticWordRecognizerTraitConst, super::OCRHolisticWordRecognizerTrait, super::TextDetectorTraitConst, super::TextDetectorTrait, super::TextDetectorCNNTraitConst, super::TextDetectorCNNTrait };
}
pub const ERFILTER_NM_IHSGrad: i32 = 1;
pub const ERFILTER_NM_RGBLGrad: i32 = 0;
pub const ERGROUPING_ORIENTATION_ANY: i32 = 1;
pub const ERGROUPING_ORIENTATION_HORIZ: i32 = 0;
pub const OCR_CNN_CLASSIFIER: i32 = 1;
pub const OCR_DECODER_VITERBI: i32 = 0;
pub const OCR_KNN_CLASSIFIER: i32 = 0;
pub const OCR_LEVEL_TEXTLINE: i32 = 1;
pub const OCR_LEVEL_WORD: i32 = 0;
pub const OEM_CUBE_ONLY: i32 = 1;
pub const OEM_DEFAULT: i32 = 3;
pub const OEM_TESSERACT_CUBE_COMBINED: i32 = 2;
pub const OEM_TESSERACT_ONLY: i32 = 0;
pub const PSM_AUTO: i32 = 3;
pub const PSM_AUTO_ONLY: i32 = 2;
pub const PSM_AUTO_OSD: i32 = 1;
pub const PSM_CIRCLE_WORD: i32 = 9;
pub const PSM_OSD_ONLY: i32 = 0;
pub const PSM_SINGLE_BLOCK: i32 = 6;
pub const PSM_SINGLE_BLOCK_VERT_TEXT: i32 = 5;
pub const PSM_SINGLE_CHAR: i32 = 10;
pub const PSM_SINGLE_COLUMN: i32 = 4;
pub const PSM_SINGLE_LINE: i32 = 7;
pub const PSM_SINGLE_WORD: i32 = 8;
#[repr(C)]
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum classifier_type {
OCR_KNN_CLASSIFIER = 0,
OCR_CNN_CLASSIFIER = 1,
}
opencv_type_enum! { crate::text::classifier_type }
#[repr(C)]
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum decoder_mode {
OCR_DECODER_VITERBI = 0,
}
opencv_type_enum! { crate::text::decoder_mode }
#[repr(C)]
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum erGrouping_Modes {
ERGROUPING_ORIENTATION_HORIZ = 0,
ERGROUPING_ORIENTATION_ANY = 1,
}
opencv_type_enum! { crate::text::erGrouping_Modes }
#[repr(C)]
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum ocr_engine_mode {
OEM_TESSERACT_ONLY = 0,
OEM_CUBE_ONLY = 1,
OEM_TESSERACT_CUBE_COMBINED = 2,
OEM_DEFAULT = 3,
}
opencv_type_enum! { crate::text::ocr_engine_mode }
#[repr(C)]
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum page_seg_mode {
PSM_OSD_ONLY = 0,
PSM_AUTO_OSD = 1,
PSM_AUTO_ONLY = 2,
PSM_AUTO = 3,
PSM_SINGLE_COLUMN = 4,
PSM_SINGLE_BLOCK_VERT_TEXT = 5,
PSM_SINGLE_BLOCK = 6,
PSM_SINGLE_LINE = 7,
PSM_SINGLE_WORD = 8,
PSM_CIRCLE_WORD = 9,
PSM_SINGLE_CHAR = 10,
}
opencv_type_enum! { crate::text::page_seg_mode }
#[inline]
pub fn mse_rs_to_er_stats(image: &impl core::ToInputArray, contours: &mut core::Vector<core::Vector<core::Point>>, regions: &mut core::Vector<core::Vector<crate::text::ERStat>>) -> Result<()> {
input_array_arg!(image);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_MSERsToERStats_const__InputArrayR_vectorLvectorLPointGGR_vectorLvectorLERStatGGR(image.as_raw__InputArray(), contours.as_raw_mut_VectorOfVectorOfPoint(), regions.as_raw_mut_VectorOfVectorOfERStat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
pub fn compute_nm_channels(_src: &impl core::ToInputArray, _channels: &mut impl core::ToOutputArray, _mode: i32) -> Result<()> {
input_array_arg!(_src);
output_array_arg!(_channels);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_computeNMChannels_const__InputArrayR_const__OutputArrayR_int(_src.as_raw__InputArray(), _channels.as_raw__OutputArray(), _mode, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
pub fn create_er_filter_nm1(cb: &core::Ptr<crate::text::ERFilter_Callback>, threshold_delta: i32, min_area: f32, max_area: f32, min_probability: f32, non_max_suppression: bool, min_probability_diff: f32) -> Result<core::Ptr<crate::text::ERFilter>> {
return_send!(via ocvrs_return);
unsafe { sys::cv_text_createERFilterNM1_const_PtrLCallbackGR_int_float_float_float_bool_float(cb.as_raw_PtrOfERFilter_Callback(), threshold_delta, min_area, max_area, min_probability, non_max_suppression, min_probability_diff, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Ptr::<crate::text::ERFilter>::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn create_er_filter_nm1_from_file(filename: &str, threshold_delta: i32, min_area: f32, max_area: f32, min_probability: f32, non_max_suppression: bool, min_probability_diff: f32) -> Result<core::Ptr<crate::text::ERFilter>> {
extern_container_arg!(filename);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_createERFilterNM1_const_StringR_int_float_float_float_bool_float(filename.opencv_as_extern(), threshold_delta, min_area, max_area, min_probability, non_max_suppression, min_probability_diff, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Ptr::<crate::text::ERFilter>::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn create_er_filter_nm2(cb: &core::Ptr<crate::text::ERFilter_Callback>, min_probability: f32) -> Result<core::Ptr<crate::text::ERFilter>> {
return_send!(via ocvrs_return);
unsafe { sys::cv_text_createERFilterNM2_const_PtrLCallbackGR_float(cb.as_raw_PtrOfERFilter_Callback(), min_probability, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Ptr::<crate::text::ERFilter>::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn create_er_filter_nm2_from_file(filename: &str, min_probability: f32) -> Result<core::Ptr<crate::text::ERFilter>> {
extern_container_arg!(filename);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_createERFilterNM2_const_StringR_float(filename.opencv_as_extern(), min_probability, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Ptr::<crate::text::ERFilter>::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn create_ocrhmm_transitions_table_1(vocabulary: &str, lexicon: &mut core::Vector<String>) -> Result<core::Mat> {
extern_container_arg!(vocabulary);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_createOCRHMMTransitionsTable_const_StringR_vectorLStringGR(vocabulary.opencv_as_extern(), lexicon.as_raw_mut_VectorOfString(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Mat::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn create_ocrhmm_transitions_table(vocabulary: &mut String, lexicon: &mut core::Vector<String>, transition_probabilities_table: &mut impl core::ToOutputArray) -> Result<()> {
string_arg_output_send!(via vocabulary_via);
output_array_arg!(transition_probabilities_table);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_createOCRHMMTransitionsTable_stringR_vectorLstringGR_const__OutputArrayR(&mut vocabulary_via, lexicon.as_raw_mut_VectorOfString(), transition_probabilities_table.as_raw__OutputArray(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
string_arg_output_receive!(vocabulary_via => vocabulary);
Ok(ret)
}
#[inline]
pub fn detect_regions_from_file(image: &impl core::ToInputArray, er_filter1: &core::Ptr<crate::text::ERFilter>, er_filter2: &core::Ptr<crate::text::ERFilter>, groups_rects: &mut core::Vector<core::Rect>, method: i32, filename: &str, min_probability: f32) -> Result<()> {
input_array_arg!(image);
extern_container_arg!(filename);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_detectRegions_const__InputArrayR_const_PtrLERFilterGR_const_PtrLERFilterGR_vectorLRectGR_int_const_StringR_float(image.as_raw__InputArray(), er_filter1.as_raw_PtrOfERFilter(), er_filter2.as_raw_PtrOfERFilter(), groups_rects.as_raw_mut_VectorOfRect(), method, filename.opencv_as_extern(), min_probability, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
pub fn detect_regions(image: &impl core::ToInputArray, er_filter1: &core::Ptr<crate::text::ERFilter>, er_filter2: &core::Ptr<crate::text::ERFilter>, regions: &mut core::Vector<core::Vector<core::Point>>) -> Result<()> {
input_array_arg!(image);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_detectRegions_const__InputArrayR_const_PtrLERFilterGR_const_PtrLERFilterGR_vectorLvectorLPointGGR(image.as_raw__InputArray(), er_filter1.as_raw_PtrOfERFilter(), er_filter2.as_raw_PtrOfERFilter(), regions.as_raw_mut_VectorOfVectorOfPoint(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
pub fn detect_text_swt(input: &impl core::ToInputArray, result: &mut core::Vector<core::Rect>, dark_on_light: bool, draw: &mut impl core::ToOutputArray, chain_b_bs: &mut impl core::ToOutputArray) -> Result<()> {
input_array_arg!(input);
output_array_arg!(draw);
output_array_arg!(chain_b_bs);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_detectTextSWT_const__InputArrayR_vectorLRectGR_bool_const__OutputArrayR_const__OutputArrayR(input.as_raw__InputArray(), result.as_raw_mut_VectorOfRect(), dark_on_light, draw.as_raw__OutputArray(), chain_b_bs.as_raw__OutputArray(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
pub fn er_grouping(img: &impl core::ToInputArray, channels: &impl core::ToInputArray, regions: &mut core::Vector<core::Vector<crate::text::ERStat>>, groups: &mut core::Vector<core::Vector<core::Vec2i>>, groups_rects: &mut core::Vector<core::Rect>, method: i32, filename: &str, min_probablity: f32) -> Result<()> {
input_array_arg!(img);
input_array_arg!(channels);
extern_container_arg!(filename);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_erGrouping_const__InputArrayR_const__InputArrayR_vectorLvectorLERStatGGR_vectorLvectorLVec2iGGR_vectorLRectGR_int_const_stringR_float(img.as_raw__InputArray(), channels.as_raw__InputArray(), regions.as_raw_mut_VectorOfVectorOfERStat(), groups.as_raw_mut_VectorOfVectorOfVec2i(), groups_rects.as_raw_mut_VectorOfRect(), method, filename.opencv_as_extern(), min_probablity, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
pub fn er_grouping_1(image: &impl core::ToInputArray, channel: &impl core::ToInputArray, mut regions: core::Vector<core::Vector<core::Point>>, groups_rects: &mut core::Vector<core::Rect>, method: i32, filename: &str, min_probablity: f32) -> Result<()> {
input_array_arg!(image);
input_array_arg!(channel);
extern_container_arg!(filename);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_erGrouping_const__InputArrayR_const__InputArrayR_vectorLvectorLPointGG_vectorLRectGR_int_const_StringR_float(image.as_raw__InputArray(), channel.as_raw__InputArray(), regions.as_raw_mut_VectorOfVectorOfPoint(), groups_rects.as_raw_mut_VectorOfRect(), method, filename.opencv_as_extern(), min_probablity, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
pub fn load_classifier_nm1(filename: &str) -> Result<core::Ptr<crate::text::ERFilter_Callback>> {
extern_container_arg!(filename);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_loadClassifierNM1_const_StringR(filename.opencv_as_extern(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Ptr::<crate::text::ERFilter_Callback>::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn load_classifier_nm2(filename: &str) -> Result<core::Ptr<crate::text::ERFilter_Callback>> {
extern_container_arg!(filename);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_loadClassifierNM2_const_StringR(filename.opencv_as_extern(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Ptr::<crate::text::ERFilter_Callback>::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn load_ocr_beam_search_classifier_cnn(filename: &str) -> Result<core::Ptr<crate::text::OCRBeamSearchDecoder_ClassifierCallback>> {
extern_container_arg!(filename);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_loadOCRBeamSearchClassifierCNN_const_StringR(filename.opencv_as_extern(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Ptr::<crate::text::OCRBeamSearchDecoder_ClassifierCallback>::opencv_from_extern(ret) };
Ok(ret)
}
#[deprecated = "use loadOCRHMMClassifier instead"]
#[inline]
pub fn load_ocrhmm_classifier_cnn(filename: &str) -> Result<core::Ptr<crate::text::OCRHMMDecoder_ClassifierCallback>> {
extern_container_arg!(filename);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_loadOCRHMMClassifierCNN_const_StringR(filename.opencv_as_extern(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Ptr::<crate::text::OCRHMMDecoder_ClassifierCallback>::opencv_from_extern(ret) };
Ok(ret)
}
#[deprecated = "loadOCRHMMClassifier instead"]
#[inline]
pub fn load_ocrhmm_classifier_nm(filename: &str) -> Result<core::Ptr<crate::text::OCRHMMDecoder_ClassifierCallback>> {
extern_container_arg!(filename);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_loadOCRHMMClassifierNM_const_StringR(filename.opencv_as_extern(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Ptr::<crate::text::OCRHMMDecoder_ClassifierCallback>::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn load_ocrhmm_classifier(filename: &str, classifier: i32) -> Result<core::Ptr<crate::text::OCRHMMDecoder_ClassifierCallback>> {
extern_container_arg!(filename);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_loadOCRHMMClassifier_const_StringR_int(filename.opencv_as_extern(), classifier, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Ptr::<crate::text::OCRHMMDecoder_ClassifierCallback>::opencv_from_extern(ret) };
Ok(ret)
}
pub trait BaseOCRTraitConst {
fn as_raw_BaseOCR(&self) -> *const c_void;
}
pub trait BaseOCRTrait: crate::text::BaseOCRTraitConst {
fn as_raw_mut_BaseOCR(&mut self) -> *mut c_void;
#[inline]
fn run(&mut self, image: &mut core::Mat, output_text: &mut String, component_rects: &mut core::Vector<core::Rect>, component_texts: &mut core::Vector<String>, component_confidences: &mut core::Vector<f32>, component_level: i32) -> Result<()> {
string_arg_output_send!(via output_text_via);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_BaseOCR_run_MatR_stringR_vectorLRectGX_vectorLstringGX_vectorLfloatGX_int(self.as_raw_mut_BaseOCR(), image.as_raw_mut_Mat(), &mut output_text_via, component_rects.as_raw_mut_VectorOfRect(), component_texts.as_raw_mut_VectorOfString(), component_confidences.as_raw_mut_VectorOff32(), component_level, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
string_arg_output_receive!(output_text_via => output_text);
Ok(ret)
}
#[inline]
fn run_mask(&mut self, image: &mut core::Mat, mask: &mut core::Mat, output_text: &mut String, component_rects: &mut core::Vector<core::Rect>, component_texts: &mut core::Vector<String>, component_confidences: &mut core::Vector<f32>, component_level: i32) -> Result<()> {
string_arg_output_send!(via output_text_via);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_BaseOCR_run_MatR_MatR_stringR_vectorLRectGX_vectorLstringGX_vectorLfloatGX_int(self.as_raw_mut_BaseOCR(), image.as_raw_mut_Mat(), mask.as_raw_mut_Mat(), &mut output_text_via, component_rects.as_raw_mut_VectorOfRect(), component_texts.as_raw_mut_VectorOfString(), component_confidences.as_raw_mut_VectorOff32(), component_level, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
string_arg_output_receive!(output_text_via => output_text);
Ok(ret)
}
}
pub struct BaseOCR {
ptr: *mut c_void
}
opencv_type_boxed! { BaseOCR }
impl Drop for BaseOCR {
#[inline]
fn drop(&mut self) {
unsafe { sys::cv_text_BaseOCR_delete(self.as_raw_mut_BaseOCR()) };
}
}
unsafe impl Send for BaseOCR {}
impl crate::text::BaseOCRTraitConst for BaseOCR {
#[inline] fn as_raw_BaseOCR(&self) -> *const c_void { self.as_raw() }
}
impl crate::text::BaseOCRTrait for BaseOCR {
#[inline] fn as_raw_mut_BaseOCR(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl BaseOCR {
}
boxed_cast_descendant! { BaseOCR, crate::text::OCRBeamSearchDecoder, cv_text_BaseOCR_to_OCRBeamSearchDecoder }
boxed_cast_descendant! { BaseOCR, crate::text::OCRHMMDecoder, cv_text_BaseOCR_to_OCRHMMDecoder }
boxed_cast_descendant! { BaseOCR, crate::text::OCRHolisticWordRecognizer, cv_text_BaseOCR_to_OCRHolisticWordRecognizer }
boxed_cast_descendant! { BaseOCR, crate::text::OCRTesseract, cv_text_BaseOCR_to_OCRTesseract }
impl std::fmt::Debug for BaseOCR {
#[inline]
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.debug_struct("BaseOCR")
.finish()
}
}
pub trait ERFilterTraitConst: core::AlgorithmTraitConst {
fn as_raw_ERFilter(&self) -> *const c_void;
#[inline]
fn get_num_rejected(&self) -> Result<i32> {
return_send!(via ocvrs_return);
unsafe { sys::cv_text_ERFilter_getNumRejected_const(self.as_raw_ERFilter(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
}
pub trait ERFilterTrait: core::AlgorithmTrait + crate::text::ERFilterTraitConst {
fn as_raw_mut_ERFilter(&mut self) -> *mut c_void;
#[inline]
fn run(&mut self, image: &impl core::ToInputArray, regions: &mut core::Vector<crate::text::ERStat>) -> Result<()> {
input_array_arg!(image);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_ERFilter_run_const__InputArrayR_vectorLERStatGR(self.as_raw_mut_ERFilter(), image.as_raw__InputArray(), regions.as_raw_mut_VectorOfERStat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
fn set_callback(&mut self, cb: &core::Ptr<crate::text::ERFilter_Callback>) -> Result<()> {
return_send!(via ocvrs_return);
unsafe { sys::cv_text_ERFilter_setCallback_const_PtrLCallbackGR(self.as_raw_mut_ERFilter(), cb.as_raw_PtrOfERFilter_Callback(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
fn set_threshold_delta(&mut self, threshold_delta: i32) -> Result<()> {
return_send!(via ocvrs_return);
unsafe { sys::cv_text_ERFilter_setThresholdDelta_int(self.as_raw_mut_ERFilter(), threshold_delta, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
fn set_min_area(&mut self, min_area: f32) -> Result<()> {
return_send!(via ocvrs_return);
unsafe { sys::cv_text_ERFilter_setMinArea_float(self.as_raw_mut_ERFilter(), min_area, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
fn set_max_area(&mut self, max_area: f32) -> Result<()> {
return_send!(via ocvrs_return);
unsafe { sys::cv_text_ERFilter_setMaxArea_float(self.as_raw_mut_ERFilter(), max_area, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
fn set_min_probability(&mut self, min_probability: f32) -> Result<()> {
return_send!(via ocvrs_return);
unsafe { sys::cv_text_ERFilter_setMinProbability_float(self.as_raw_mut_ERFilter(), min_probability, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
fn set_min_probability_diff(&mut self, min_probability_diff: f32) -> Result<()> {
return_send!(via ocvrs_return);
unsafe { sys::cv_text_ERFilter_setMinProbabilityDiff_float(self.as_raw_mut_ERFilter(), min_probability_diff, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
fn set_non_max_suppression(&mut self, non_max_suppression: bool) -> Result<()> {
return_send!(via ocvrs_return);
unsafe { sys::cv_text_ERFilter_setNonMaxSuppression_bool(self.as_raw_mut_ERFilter(), non_max_suppression, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
}
pub struct ERFilter {
ptr: *mut c_void
}
opencv_type_boxed! { ERFilter }
impl Drop for ERFilter {
#[inline]
fn drop(&mut self) {
unsafe { sys::cv_text_ERFilter_delete(self.as_raw_mut_ERFilter()) };
}
}
unsafe impl Send for ERFilter {}
impl core::AlgorithmTraitConst for ERFilter {
#[inline] fn as_raw_Algorithm(&self) -> *const c_void { self.as_raw() }
}
impl core::AlgorithmTrait for ERFilter {
#[inline] fn as_raw_mut_Algorithm(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl crate::text::ERFilterTraitConst for ERFilter {
#[inline] fn as_raw_ERFilter(&self) -> *const c_void { self.as_raw() }
}
impl crate::text::ERFilterTrait for ERFilter {
#[inline] fn as_raw_mut_ERFilter(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl ERFilter {
}
boxed_cast_base! { ERFilter, core::Algorithm, cv_text_ERFilter_to_Algorithm }
impl std::fmt::Debug for ERFilter {
#[inline]
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.debug_struct("ERFilter")
.finish()
}
}
pub trait ERFilter_CallbackTraitConst {
fn as_raw_ERFilter_Callback(&self) -> *const c_void;
}
pub trait ERFilter_CallbackTrait: crate::text::ERFilter_CallbackTraitConst {
fn as_raw_mut_ERFilter_Callback(&mut self) -> *mut c_void;
#[inline]
fn eval(&mut self, stat: &crate::text::ERStat) -> Result<f64> {
return_send!(via ocvrs_return);
unsafe { sys::cv_text_ERFilter_Callback_eval_const_ERStatR(self.as_raw_mut_ERFilter_Callback(), stat.as_raw_ERStat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
}
pub struct ERFilter_Callback {
ptr: *mut c_void
}
opencv_type_boxed! { ERFilter_Callback }
impl Drop for ERFilter_Callback {
#[inline]
fn drop(&mut self) {
unsafe { sys::cv_text_ERFilter_Callback_delete(self.as_raw_mut_ERFilter_Callback()) };
}
}
unsafe impl Send for ERFilter_Callback {}
impl crate::text::ERFilter_CallbackTraitConst for ERFilter_Callback {
#[inline] fn as_raw_ERFilter_Callback(&self) -> *const c_void { self.as_raw() }
}
impl crate::text::ERFilter_CallbackTrait for ERFilter_Callback {
#[inline] fn as_raw_mut_ERFilter_Callback(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl ERFilter_Callback {
}
impl std::fmt::Debug for ERFilter_Callback {
#[inline]
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.debug_struct("ERFilter_Callback")
.finish()
}
}
pub trait ERStatTraitConst {
fn as_raw_ERStat(&self) -> *const c_void;
#[inline]
fn pixel(&self) -> i32 {
let ret = unsafe { sys::cv_text_ERStat_propPixel_const(self.as_raw_ERStat()) };
ret
}
#[inline]
fn level(&self) -> i32 {
let ret = unsafe { sys::cv_text_ERStat_propLevel_const(self.as_raw_ERStat()) };
ret
}
#[inline]
fn area(&self) -> i32 {
let ret = unsafe { sys::cv_text_ERStat_propArea_const(self.as_raw_ERStat()) };
ret
}
#[inline]
fn perimeter(&self) -> i32 {
let ret = unsafe { sys::cv_text_ERStat_propPerimeter_const(self.as_raw_ERStat()) };
ret
}
#[inline]
fn euler(&self) -> i32 {
let ret = unsafe { sys::cv_text_ERStat_propEuler_const(self.as_raw_ERStat()) };
ret
}
#[inline]
fn rect(&self) -> core::Rect {
return_send!(via ocvrs_return);
unsafe { sys::cv_text_ERStat_propRect_const(self.as_raw_ERStat(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
ret
}
#[inline]
fn med_crossings(&self) -> f32 {
let ret = unsafe { sys::cv_text_ERStat_propMed_crossings_const(self.as_raw_ERStat()) };
ret
}
#[inline]
fn hole_area_ratio(&self) -> f32 {
let ret = unsafe { sys::cv_text_ERStat_propHole_area_ratio_const(self.as_raw_ERStat()) };
ret
}
#[inline]
fn convex_hull_ratio(&self) -> f32 {
let ret = unsafe { sys::cv_text_ERStat_propConvex_hull_ratio_const(self.as_raw_ERStat()) };
ret
}
#[inline]
fn num_inflexion_points(&self) -> f32 {
let ret = unsafe { sys::cv_text_ERStat_propNum_inflexion_points_const(self.as_raw_ERStat()) };
ret
}
#[inline]
fn probability(&self) -> f64 {
let ret = unsafe { sys::cv_text_ERStat_propProbability_const(self.as_raw_ERStat()) };
ret
}
#[inline]
fn local_maxima(&self) -> bool {
let ret = unsafe { sys::cv_text_ERStat_propLocal_maxima_const(self.as_raw_ERStat()) };
ret
}
}
pub trait ERStatTrait: crate::text::ERStatTraitConst {
fn as_raw_mut_ERStat(&mut self) -> *mut c_void;
#[inline]
fn set_pixel(&mut self, val: i32) {
let ret = unsafe { sys::cv_text_ERStat_propPixel_int(self.as_raw_mut_ERStat(), val) };
ret
}
#[inline]
fn set_level(&mut self, val: i32) {
let ret = unsafe { sys::cv_text_ERStat_propLevel_int(self.as_raw_mut_ERStat(), val) };
ret
}
#[inline]
fn set_area(&mut self, val: i32) {
let ret = unsafe { sys::cv_text_ERStat_propArea_int(self.as_raw_mut_ERStat(), val) };
ret
}
#[inline]
fn set_perimeter(&mut self, val: i32) {
let ret = unsafe { sys::cv_text_ERStat_propPerimeter_int(self.as_raw_mut_ERStat(), val) };
ret
}
#[inline]
fn set_euler(&mut self, val: i32) {
let ret = unsafe { sys::cv_text_ERStat_propEuler_int(self.as_raw_mut_ERStat(), val) };
ret
}
#[inline]
fn set_rect(&mut self, val: core::Rect) {
let ret = unsafe { sys::cv_text_ERStat_propRect_Rect(self.as_raw_mut_ERStat(), val.opencv_as_extern()) };
ret
}
#[inline]
fn raw_moments(&mut self) -> &mut [f64; 2] {
let ret = unsafe { sys::cv_text_ERStat_propRaw_moments(self.as_raw_mut_ERStat()) };
let ret = unsafe { ret.as_mut() }.expect("Function returned null pointer");
ret
}
#[inline]
fn central_moments(&mut self) -> &mut [f64; 3] {
let ret = unsafe { sys::cv_text_ERStat_propCentral_moments(self.as_raw_mut_ERStat()) };
let ret = unsafe { ret.as_mut() }.expect("Function returned null pointer");
ret
}
#[inline]
fn set_med_crossings(&mut self, val: f32) {
let ret = unsafe { sys::cv_text_ERStat_propMed_crossings_float(self.as_raw_mut_ERStat(), val) };
ret
}
#[inline]
fn set_hole_area_ratio(&mut self, val: f32) {
let ret = unsafe { sys::cv_text_ERStat_propHole_area_ratio_float(self.as_raw_mut_ERStat(), val) };
ret
}
#[inline]
fn set_convex_hull_ratio(&mut self, val: f32) {
let ret = unsafe { sys::cv_text_ERStat_propConvex_hull_ratio_float(self.as_raw_mut_ERStat(), val) };
ret
}
#[inline]
fn set_num_inflexion_points(&mut self, val: f32) {
let ret = unsafe { sys::cv_text_ERStat_propNum_inflexion_points_float(self.as_raw_mut_ERStat(), val) };
ret
}
#[inline]
fn set_probability(&mut self, val: f64) {
let ret = unsafe { sys::cv_text_ERStat_propProbability_double(self.as_raw_mut_ERStat(), val) };
ret
}
#[inline]
fn parent(&mut self) -> crate::text::ERStat {
let ret = unsafe { sys::cv_text_ERStat_propParent(self.as_raw_mut_ERStat()) };
let ret = unsafe { crate::text::ERStat::opencv_from_extern(ret) };
ret
}
#[inline]
fn set_parent(&mut self, val: &mut crate::text::ERStat) {
let ret = unsafe { sys::cv_text_ERStat_propParent_ERStatX(self.as_raw_mut_ERStat(), val.as_raw_mut_ERStat()) };
ret
}
#[inline]
fn child(&mut self) -> crate::text::ERStat {
let ret = unsafe { sys::cv_text_ERStat_propChild(self.as_raw_mut_ERStat()) };
let ret = unsafe { crate::text::ERStat::opencv_from_extern(ret) };
ret
}
#[inline]
fn set_child(&mut self, val: &mut crate::text::ERStat) {
let ret = unsafe { sys::cv_text_ERStat_propChild_ERStatX(self.as_raw_mut_ERStat(), val.as_raw_mut_ERStat()) };
ret
}
#[inline]
fn next(&mut self) -> crate::text::ERStat {
let ret = unsafe { sys::cv_text_ERStat_propNext(self.as_raw_mut_ERStat()) };
let ret = unsafe { crate::text::ERStat::opencv_from_extern(ret) };
ret
}
#[inline]
fn set_next(&mut self, val: &mut crate::text::ERStat) {
let ret = unsafe { sys::cv_text_ERStat_propNext_ERStatX(self.as_raw_mut_ERStat(), val.as_raw_mut_ERStat()) };
ret
}
#[inline]
fn prev(&mut self) -> crate::text::ERStat {
let ret = unsafe { sys::cv_text_ERStat_propPrev(self.as_raw_mut_ERStat()) };
let ret = unsafe { crate::text::ERStat::opencv_from_extern(ret) };
ret
}
#[inline]
fn set_prev(&mut self, val: &mut crate::text::ERStat) {
let ret = unsafe { sys::cv_text_ERStat_propPrev_ERStatX(self.as_raw_mut_ERStat(), val.as_raw_mut_ERStat()) };
ret
}
#[inline]
fn set_local_maxima(&mut self, val: bool) {
let ret = unsafe { sys::cv_text_ERStat_propLocal_maxima_bool(self.as_raw_mut_ERStat(), val) };
ret
}
#[inline]
fn max_probability_ancestor(&mut self) -> crate::text::ERStat {
let ret = unsafe { sys::cv_text_ERStat_propMax_probability_ancestor(self.as_raw_mut_ERStat()) };
let ret = unsafe { crate::text::ERStat::opencv_from_extern(ret) };
ret
}
#[inline]
fn set_max_probability_ancestor(&mut self, val: &mut crate::text::ERStat) {
let ret = unsafe { sys::cv_text_ERStat_propMax_probability_ancestor_ERStatX(self.as_raw_mut_ERStat(), val.as_raw_mut_ERStat()) };
ret
}
#[inline]
fn min_probability_ancestor(&mut self) -> crate::text::ERStat {
let ret = unsafe { sys::cv_text_ERStat_propMin_probability_ancestor(self.as_raw_mut_ERStat()) };
let ret = unsafe { crate::text::ERStat::opencv_from_extern(ret) };
ret
}
#[inline]
fn set_min_probability_ancestor(&mut self, val: &mut crate::text::ERStat) {
let ret = unsafe { sys::cv_text_ERStat_propMin_probability_ancestor_ERStatX(self.as_raw_mut_ERStat(), val.as_raw_mut_ERStat()) };
ret
}
}
pub struct ERStat {
ptr: *mut c_void
}
opencv_type_boxed! { ERStat }
impl Drop for ERStat {
#[inline]
fn drop(&mut self) {
unsafe { sys::cv_text_ERStat_delete(self.as_raw_mut_ERStat()) };
}
}
unsafe impl Send for ERStat {}
impl crate::text::ERStatTraitConst for ERStat {
#[inline] fn as_raw_ERStat(&self) -> *const c_void { self.as_raw() }
}
impl crate::text::ERStatTrait for ERStat {
#[inline] fn as_raw_mut_ERStat(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl ERStat {
#[inline]
pub fn new(level: i32, pixel: i32, x: i32, y: i32) -> Result<crate::text::ERStat> {
return_send!(via ocvrs_return);
unsafe { sys::cv_text_ERStat_ERStat_int_int_int_int(level, pixel, x, y, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { crate::text::ERStat::opencv_from_extern(ret) };
Ok(ret)
}
}
impl std::fmt::Debug for ERStat {
#[inline]
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.debug_struct("ERStat")
.field("pixel", &crate::text::ERStatTraitConst::pixel(self))
.field("level", &crate::text::ERStatTraitConst::level(self))
.field("area", &crate::text::ERStatTraitConst::area(self))
.field("perimeter", &crate::text::ERStatTraitConst::perimeter(self))
.field("euler", &crate::text::ERStatTraitConst::euler(self))
.field("rect", &crate::text::ERStatTraitConst::rect(self))
.field("med_crossings", &crate::text::ERStatTraitConst::med_crossings(self))
.field("hole_area_ratio", &crate::text::ERStatTraitConst::hole_area_ratio(self))
.field("convex_hull_ratio", &crate::text::ERStatTraitConst::convex_hull_ratio(self))
.field("num_inflexion_points", &crate::text::ERStatTraitConst::num_inflexion_points(self))
.field("probability", &crate::text::ERStatTraitConst::probability(self))
.field("local_maxima", &crate::text::ERStatTraitConst::local_maxima(self))
.finish()
}
}
pub trait OCRBeamSearchDecoderTraitConst: crate::text::BaseOCRTraitConst {
fn as_raw_OCRBeamSearchDecoder(&self) -> *const c_void;
}
pub trait OCRBeamSearchDecoderTrait: crate::text::BaseOCRTrait + crate::text::OCRBeamSearchDecoderTraitConst {
fn as_raw_mut_OCRBeamSearchDecoder(&mut self) -> *mut c_void;
#[inline]
fn run_multiple(&mut self, image: &mut core::Mat, output_text: &mut String, component_rects: &mut core::Vector<core::Rect>, component_texts: &mut core::Vector<String>, component_confidences: &mut core::Vector<f32>, component_level: i32) -> Result<()> {
string_arg_output_send!(via output_text_via);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_OCRBeamSearchDecoder_run_MatR_stringR_vectorLRectGX_vectorLstringGX_vectorLfloatGX_int(self.as_raw_mut_OCRBeamSearchDecoder(), image.as_raw_mut_Mat(), &mut output_text_via, component_rects.as_raw_mut_VectorOfRect(), component_texts.as_raw_mut_VectorOfString(), component_confidences.as_raw_mut_VectorOff32(), component_level, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
string_arg_output_receive!(output_text_via => output_text);
Ok(ret)
}
#[inline]
fn run_multiple_mask(&mut self, image: &mut core::Mat, mask: &mut core::Mat, output_text: &mut String, component_rects: &mut core::Vector<core::Rect>, component_texts: &mut core::Vector<String>, component_confidences: &mut core::Vector<f32>, component_level: i32) -> Result<()> {
string_arg_output_send!(via output_text_via);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_OCRBeamSearchDecoder_run_MatR_MatR_stringR_vectorLRectGX_vectorLstringGX_vectorLfloatGX_int(self.as_raw_mut_OCRBeamSearchDecoder(), image.as_raw_mut_Mat(), mask.as_raw_mut_Mat(), &mut output_text_via, component_rects.as_raw_mut_VectorOfRect(), component_texts.as_raw_mut_VectorOfString(), component_confidences.as_raw_mut_VectorOff32(), component_level, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
string_arg_output_receive!(output_text_via => output_text);
Ok(ret)
}
#[inline]
fn run(&mut self, image: &impl core::ToInputArray, min_confidence: i32, component_level: i32) -> Result<String> {
input_array_arg!(image);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_OCRBeamSearchDecoder_run_const__InputArrayR_int_int(self.as_raw_mut_OCRBeamSearchDecoder(), image.as_raw__InputArray(), min_confidence, component_level, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { String::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
fn run_mask(&mut self, image: &impl core::ToInputArray, mask: &impl core::ToInputArray, min_confidence: i32, component_level: i32) -> Result<String> {
input_array_arg!(image);
input_array_arg!(mask);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_OCRBeamSearchDecoder_run_const__InputArrayR_const__InputArrayR_int_int(self.as_raw_mut_OCRBeamSearchDecoder(), image.as_raw__InputArray(), mask.as_raw__InputArray(), min_confidence, component_level, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { String::opencv_from_extern(ret) };
Ok(ret)
}
}
pub struct OCRBeamSearchDecoder {
ptr: *mut c_void
}
opencv_type_boxed! { OCRBeamSearchDecoder }
impl Drop for OCRBeamSearchDecoder {
#[inline]
fn drop(&mut self) {
unsafe { sys::cv_text_OCRBeamSearchDecoder_delete(self.as_raw_mut_OCRBeamSearchDecoder()) };
}
}
unsafe impl Send for OCRBeamSearchDecoder {}
impl crate::text::BaseOCRTraitConst for OCRBeamSearchDecoder {
#[inline] fn as_raw_BaseOCR(&self) -> *const c_void { self.as_raw() }
}
impl crate::text::BaseOCRTrait for OCRBeamSearchDecoder {
#[inline] fn as_raw_mut_BaseOCR(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl crate::text::OCRBeamSearchDecoderTraitConst for OCRBeamSearchDecoder {
#[inline] fn as_raw_OCRBeamSearchDecoder(&self) -> *const c_void { self.as_raw() }
}
impl crate::text::OCRBeamSearchDecoderTrait for OCRBeamSearchDecoder {
#[inline] fn as_raw_mut_OCRBeamSearchDecoder(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl OCRBeamSearchDecoder {
#[inline]
pub fn create(classifier: core::Ptr<crate::text::OCRBeamSearchDecoder_ClassifierCallback>, vocabulary: &str, transition_probabilities_table: &impl core::ToInputArray, emission_probabilities_table: &impl core::ToInputArray, mode: crate::text::decoder_mode, beam_size: i32) -> Result<core::Ptr<crate::text::OCRBeamSearchDecoder>> {
extern_container_arg!(vocabulary);
input_array_arg!(transition_probabilities_table);
input_array_arg!(emission_probabilities_table);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_OCRBeamSearchDecoder_create_const_PtrLClassifierCallbackG_const_stringR_const__InputArrayR_const__InputArrayR_decoder_mode_int(classifier.as_raw_PtrOfOCRBeamSearchDecoder_ClassifierCallback(), vocabulary.opencv_as_extern(), transition_probabilities_table.as_raw__InputArray(), emission_probabilities_table.as_raw__InputArray(), mode, beam_size, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Ptr::<crate::text::OCRBeamSearchDecoder>::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn create_from_file(filename: &str, vocabulary: &str, transition_probabilities_table: &impl core::ToInputArray, emission_probabilities_table: &impl core::ToInputArray, mode: crate::text::decoder_mode, beam_size: i32) -> Result<core::Ptr<crate::text::OCRBeamSearchDecoder>> {
extern_container_arg!(filename);
extern_container_arg!(vocabulary);
input_array_arg!(transition_probabilities_table);
input_array_arg!(emission_probabilities_table);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_OCRBeamSearchDecoder_create_const_StringR_const_StringR_const__InputArrayR_const__InputArrayR_decoder_mode_int(filename.opencv_as_extern(), vocabulary.opencv_as_extern(), transition_probabilities_table.as_raw__InputArray(), emission_probabilities_table.as_raw__InputArray(), mode, beam_size, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Ptr::<crate::text::OCRBeamSearchDecoder>::opencv_from_extern(ret) };
Ok(ret)
}
}
boxed_cast_base! { OCRBeamSearchDecoder, crate::text::BaseOCR, cv_text_OCRBeamSearchDecoder_to_BaseOCR }
impl std::fmt::Debug for OCRBeamSearchDecoder {
#[inline]
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.debug_struct("OCRBeamSearchDecoder")
.finish()
}
}
pub trait OCRBeamSearchDecoder_ClassifierCallbackTraitConst {
fn as_raw_OCRBeamSearchDecoder_ClassifierCallback(&self) -> *const c_void;
}
pub trait OCRBeamSearchDecoder_ClassifierCallbackTrait: crate::text::OCRBeamSearchDecoder_ClassifierCallbackTraitConst {
fn as_raw_mut_OCRBeamSearchDecoder_ClassifierCallback(&mut self) -> *mut c_void;
#[inline]
fn eval(&mut self, image: &impl core::ToInputArray, recognition_probabilities: &mut core::Vector<core::Vector<f64>>, oversegmentation: &mut core::Vector<i32>) -> Result<()> {
input_array_arg!(image);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_OCRBeamSearchDecoder_ClassifierCallback_eval_const__InputArrayR_vectorLvectorLdoubleGGR_vectorLintGR(self.as_raw_mut_OCRBeamSearchDecoder_ClassifierCallback(), image.as_raw__InputArray(), recognition_probabilities.as_raw_mut_VectorOfVectorOff64(), oversegmentation.as_raw_mut_VectorOfi32(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
fn get_window_size(&mut self) -> Result<i32> {
return_send!(via ocvrs_return);
unsafe { sys::cv_text_OCRBeamSearchDecoder_ClassifierCallback_getWindowSize(self.as_raw_mut_OCRBeamSearchDecoder_ClassifierCallback(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
#[inline]
fn get_step_size(&mut self) -> Result<i32> {
return_send!(via ocvrs_return);
unsafe { sys::cv_text_OCRBeamSearchDecoder_ClassifierCallback_getStepSize(self.as_raw_mut_OCRBeamSearchDecoder_ClassifierCallback(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
}
pub struct OCRBeamSearchDecoder_ClassifierCallback {
ptr: *mut c_void
}
opencv_type_boxed! { OCRBeamSearchDecoder_ClassifierCallback }
impl Drop for OCRBeamSearchDecoder_ClassifierCallback {
#[inline]
fn drop(&mut self) {
unsafe { sys::cv_text_OCRBeamSearchDecoder_ClassifierCallback_delete(self.as_raw_mut_OCRBeamSearchDecoder_ClassifierCallback()) };
}
}
unsafe impl Send for OCRBeamSearchDecoder_ClassifierCallback {}
impl crate::text::OCRBeamSearchDecoder_ClassifierCallbackTraitConst for OCRBeamSearchDecoder_ClassifierCallback {
#[inline] fn as_raw_OCRBeamSearchDecoder_ClassifierCallback(&self) -> *const c_void { self.as_raw() }
}
impl crate::text::OCRBeamSearchDecoder_ClassifierCallbackTrait for OCRBeamSearchDecoder_ClassifierCallback {
#[inline] fn as_raw_mut_OCRBeamSearchDecoder_ClassifierCallback(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl OCRBeamSearchDecoder_ClassifierCallback {
}
impl std::fmt::Debug for OCRBeamSearchDecoder_ClassifierCallback {
#[inline]
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.debug_struct("OCRBeamSearchDecoder_ClassifierCallback")
.finish()
}
}
pub trait OCRHMMDecoderTraitConst: crate::text::BaseOCRTraitConst {
fn as_raw_OCRHMMDecoder(&self) -> *const c_void;
}
pub trait OCRHMMDecoderTrait: crate::text::BaseOCRTrait + crate::text::OCRHMMDecoderTraitConst {
fn as_raw_mut_OCRHMMDecoder(&mut self) -> *mut c_void;
#[inline]
fn run_multiple(&mut self, image: &mut core::Mat, output_text: &mut String, component_rects: &mut core::Vector<core::Rect>, component_texts: &mut core::Vector<String>, component_confidences: &mut core::Vector<f32>, component_level: i32) -> Result<()> {
string_arg_output_send!(via output_text_via);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_OCRHMMDecoder_run_MatR_stringR_vectorLRectGX_vectorLstringGX_vectorLfloatGX_int(self.as_raw_mut_OCRHMMDecoder(), image.as_raw_mut_Mat(), &mut output_text_via, component_rects.as_raw_mut_VectorOfRect(), component_texts.as_raw_mut_VectorOfString(), component_confidences.as_raw_mut_VectorOff32(), component_level, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
string_arg_output_receive!(output_text_via => output_text);
Ok(ret)
}
#[inline]
fn run_multiple_mask(&mut self, image: &mut core::Mat, mask: &mut core::Mat, output_text: &mut String, component_rects: &mut core::Vector<core::Rect>, component_texts: &mut core::Vector<String>, component_confidences: &mut core::Vector<f32>, component_level: i32) -> Result<()> {
string_arg_output_send!(via output_text_via);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_OCRHMMDecoder_run_MatR_MatR_stringR_vectorLRectGX_vectorLstringGX_vectorLfloatGX_int(self.as_raw_mut_OCRHMMDecoder(), image.as_raw_mut_Mat(), mask.as_raw_mut_Mat(), &mut output_text_via, component_rects.as_raw_mut_VectorOfRect(), component_texts.as_raw_mut_VectorOfString(), component_confidences.as_raw_mut_VectorOff32(), component_level, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
string_arg_output_receive!(output_text_via => output_text);
Ok(ret)
}
#[inline]
fn run(&mut self, image: &impl core::ToInputArray, min_confidence: i32, component_level: i32) -> Result<String> {
input_array_arg!(image);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_OCRHMMDecoder_run_const__InputArrayR_int_int(self.as_raw_mut_OCRHMMDecoder(), image.as_raw__InputArray(), min_confidence, component_level, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { String::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
fn run_mask(&mut self, image: &impl core::ToInputArray, mask: &impl core::ToInputArray, min_confidence: i32, component_level: i32) -> Result<String> {
input_array_arg!(image);
input_array_arg!(mask);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_OCRHMMDecoder_run_const__InputArrayR_const__InputArrayR_int_int(self.as_raw_mut_OCRHMMDecoder(), image.as_raw__InputArray(), mask.as_raw__InputArray(), min_confidence, component_level, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { String::opencv_from_extern(ret) };
Ok(ret)
}
}
pub struct OCRHMMDecoder {
ptr: *mut c_void
}
opencv_type_boxed! { OCRHMMDecoder }
impl Drop for OCRHMMDecoder {
#[inline]
fn drop(&mut self) {
unsafe { sys::cv_text_OCRHMMDecoder_delete(self.as_raw_mut_OCRHMMDecoder()) };
}
}
unsafe impl Send for OCRHMMDecoder {}
impl crate::text::BaseOCRTraitConst for OCRHMMDecoder {
#[inline] fn as_raw_BaseOCR(&self) -> *const c_void { self.as_raw() }
}
impl crate::text::BaseOCRTrait for OCRHMMDecoder {
#[inline] fn as_raw_mut_BaseOCR(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl crate::text::OCRHMMDecoderTraitConst for OCRHMMDecoder {
#[inline] fn as_raw_OCRHMMDecoder(&self) -> *const c_void { self.as_raw() }
}
impl crate::text::OCRHMMDecoderTrait for OCRHMMDecoder {
#[inline] fn as_raw_mut_OCRHMMDecoder(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl OCRHMMDecoder {
#[inline]
pub fn create(classifier: core::Ptr<crate::text::OCRHMMDecoder_ClassifierCallback>, vocabulary: &str, transition_probabilities_table: &impl core::ToInputArray, emission_probabilities_table: &impl core::ToInputArray, mode: i32) -> Result<core::Ptr<crate::text::OCRHMMDecoder>> {
extern_container_arg!(vocabulary);
input_array_arg!(transition_probabilities_table);
input_array_arg!(emission_probabilities_table);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_OCRHMMDecoder_create_const_PtrLClassifierCallbackG_const_StringR_const__InputArrayR_const__InputArrayR_int(classifier.as_raw_PtrOfOCRHMMDecoder_ClassifierCallback(), vocabulary.opencv_as_extern(), transition_probabilities_table.as_raw__InputArray(), emission_probabilities_table.as_raw__InputArray(), mode, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Ptr::<crate::text::OCRHMMDecoder>::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn create_from_file(filename: &str, vocabulary: &str, transition_probabilities_table: &impl core::ToInputArray, emission_probabilities_table: &impl core::ToInputArray, mode: i32, classifier: i32) -> Result<core::Ptr<crate::text::OCRHMMDecoder>> {
extern_container_arg!(filename);
extern_container_arg!(vocabulary);
input_array_arg!(transition_probabilities_table);
input_array_arg!(emission_probabilities_table);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_OCRHMMDecoder_create_const_StringR_const_StringR_const__InputArrayR_const__InputArrayR_int_int(filename.opencv_as_extern(), vocabulary.opencv_as_extern(), transition_probabilities_table.as_raw__InputArray(), emission_probabilities_table.as_raw__InputArray(), mode, classifier, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Ptr::<crate::text::OCRHMMDecoder>::opencv_from_extern(ret) };
Ok(ret)
}
}
boxed_cast_base! { OCRHMMDecoder, crate::text::BaseOCR, cv_text_OCRHMMDecoder_to_BaseOCR }
impl std::fmt::Debug for OCRHMMDecoder {
#[inline]
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.debug_struct("OCRHMMDecoder")
.finish()
}
}
pub trait OCRHMMDecoder_ClassifierCallbackTraitConst {
fn as_raw_OCRHMMDecoder_ClassifierCallback(&self) -> *const c_void;
}
pub trait OCRHMMDecoder_ClassifierCallbackTrait: crate::text::OCRHMMDecoder_ClassifierCallbackTraitConst {
fn as_raw_mut_OCRHMMDecoder_ClassifierCallback(&mut self) -> *mut c_void;
#[inline]
fn eval(&mut self, image: &impl core::ToInputArray, out_class: &mut core::Vector<i32>, out_confidence: &mut core::Vector<f64>) -> Result<()> {
input_array_arg!(image);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_OCRHMMDecoder_ClassifierCallback_eval_const__InputArrayR_vectorLintGR_vectorLdoubleGR(self.as_raw_mut_OCRHMMDecoder_ClassifierCallback(), image.as_raw__InputArray(), out_class.as_raw_mut_VectorOfi32(), out_confidence.as_raw_mut_VectorOff64(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
}
pub struct OCRHMMDecoder_ClassifierCallback {
ptr: *mut c_void
}
opencv_type_boxed! { OCRHMMDecoder_ClassifierCallback }
impl Drop for OCRHMMDecoder_ClassifierCallback {
#[inline]
fn drop(&mut self) {
unsafe { sys::cv_text_OCRHMMDecoder_ClassifierCallback_delete(self.as_raw_mut_OCRHMMDecoder_ClassifierCallback()) };
}
}
unsafe impl Send for OCRHMMDecoder_ClassifierCallback {}
impl crate::text::OCRHMMDecoder_ClassifierCallbackTraitConst for OCRHMMDecoder_ClassifierCallback {
#[inline] fn as_raw_OCRHMMDecoder_ClassifierCallback(&self) -> *const c_void { self.as_raw() }
}
impl crate::text::OCRHMMDecoder_ClassifierCallbackTrait for OCRHMMDecoder_ClassifierCallback {
#[inline] fn as_raw_mut_OCRHMMDecoder_ClassifierCallback(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl OCRHMMDecoder_ClassifierCallback {
}
impl std::fmt::Debug for OCRHMMDecoder_ClassifierCallback {
#[inline]
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.debug_struct("OCRHMMDecoder_ClassifierCallback")
.finish()
}
}
pub trait OCRHolisticWordRecognizerTraitConst: crate::text::BaseOCRTraitConst {
fn as_raw_OCRHolisticWordRecognizer(&self) -> *const c_void;
}
pub trait OCRHolisticWordRecognizerTrait: crate::text::BaseOCRTrait + crate::text::OCRHolisticWordRecognizerTraitConst {
fn as_raw_mut_OCRHolisticWordRecognizer(&mut self) -> *mut c_void;
#[inline]
fn run(&mut self, image: &mut core::Mat, output_text: &mut String, component_rects: &mut core::Vector<core::Rect>, component_texts: &mut core::Vector<String>, component_confidences: &mut core::Vector<f32>, component_level: i32) -> Result<()> {
string_arg_output_send!(via output_text_via);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_OCRHolisticWordRecognizer_run_MatR_stringR_vectorLRectGX_vectorLstringGX_vectorLfloatGX_int(self.as_raw_mut_OCRHolisticWordRecognizer(), image.as_raw_mut_Mat(), &mut output_text_via, component_rects.as_raw_mut_VectorOfRect(), component_texts.as_raw_mut_VectorOfString(), component_confidences.as_raw_mut_VectorOff32(), component_level, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
string_arg_output_receive!(output_text_via => output_text);
Ok(ret)
}
#[inline]
fn run_mask(&mut self, image: &mut core::Mat, mask: &mut core::Mat, output_text: &mut String, component_rects: &mut core::Vector<core::Rect>, component_texts: &mut core::Vector<String>, component_confidences: &mut core::Vector<f32>, component_level: i32) -> Result<()> {
string_arg_output_send!(via output_text_via);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_OCRHolisticWordRecognizer_run_MatR_MatR_stringR_vectorLRectGX_vectorLstringGX_vectorLfloatGX_int(self.as_raw_mut_OCRHolisticWordRecognizer(), image.as_raw_mut_Mat(), mask.as_raw_mut_Mat(), &mut output_text_via, component_rects.as_raw_mut_VectorOfRect(), component_texts.as_raw_mut_VectorOfString(), component_confidences.as_raw_mut_VectorOff32(), component_level, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
string_arg_output_receive!(output_text_via => output_text);
Ok(ret)
}
}
pub struct OCRHolisticWordRecognizer {
ptr: *mut c_void
}
opencv_type_boxed! { OCRHolisticWordRecognizer }
impl Drop for OCRHolisticWordRecognizer {
#[inline]
fn drop(&mut self) {
unsafe { sys::cv_text_OCRHolisticWordRecognizer_delete(self.as_raw_mut_OCRHolisticWordRecognizer()) };
}
}
unsafe impl Send for OCRHolisticWordRecognizer {}
impl crate::text::BaseOCRTraitConst for OCRHolisticWordRecognizer {
#[inline] fn as_raw_BaseOCR(&self) -> *const c_void { self.as_raw() }
}
impl crate::text::BaseOCRTrait for OCRHolisticWordRecognizer {
#[inline] fn as_raw_mut_BaseOCR(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl crate::text::OCRHolisticWordRecognizerTraitConst for OCRHolisticWordRecognizer {
#[inline] fn as_raw_OCRHolisticWordRecognizer(&self) -> *const c_void { self.as_raw() }
}
impl crate::text::OCRHolisticWordRecognizerTrait for OCRHolisticWordRecognizer {
#[inline] fn as_raw_mut_OCRHolisticWordRecognizer(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl OCRHolisticWordRecognizer {
#[inline]
pub fn create(arch_filename: &str, weights_filename: &str, words_filename: &str) -> Result<core::Ptr<crate::text::OCRHolisticWordRecognizer>> {
extern_container_arg!(arch_filename);
extern_container_arg!(weights_filename);
extern_container_arg!(words_filename);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_OCRHolisticWordRecognizer_create_const_stringR_const_stringR_const_stringR(arch_filename.opencv_as_extern(), weights_filename.opencv_as_extern(), words_filename.opencv_as_extern(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Ptr::<crate::text::OCRHolisticWordRecognizer>::opencv_from_extern(ret) };
Ok(ret)
}
}
boxed_cast_base! { OCRHolisticWordRecognizer, crate::text::BaseOCR, cv_text_OCRHolisticWordRecognizer_to_BaseOCR }
impl std::fmt::Debug for OCRHolisticWordRecognizer {
#[inline]
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.debug_struct("OCRHolisticWordRecognizer")
.finish()
}
}
pub trait OCRTesseractTraitConst: crate::text::BaseOCRTraitConst {
fn as_raw_OCRTesseract(&self) -> *const c_void;
}
pub trait OCRTesseractTrait: crate::text::BaseOCRTrait + crate::text::OCRTesseractTraitConst {
fn as_raw_mut_OCRTesseract(&mut self) -> *mut c_void;
#[inline]
fn run_multiple(&mut self, image: &mut core::Mat, output_text: &mut String, component_rects: &mut core::Vector<core::Rect>, component_texts: &mut core::Vector<String>, component_confidences: &mut core::Vector<f32>, component_level: i32) -> Result<()> {
string_arg_output_send!(via output_text_via);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_OCRTesseract_run_MatR_stringR_vectorLRectGX_vectorLstringGX_vectorLfloatGX_int(self.as_raw_mut_OCRTesseract(), image.as_raw_mut_Mat(), &mut output_text_via, component_rects.as_raw_mut_VectorOfRect(), component_texts.as_raw_mut_VectorOfString(), component_confidences.as_raw_mut_VectorOff32(), component_level, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
string_arg_output_receive!(output_text_via => output_text);
Ok(ret)
}
#[inline]
fn run_multiple_mask(&mut self, image: &mut core::Mat, mask: &mut core::Mat, output_text: &mut String, component_rects: &mut core::Vector<core::Rect>, component_texts: &mut core::Vector<String>, component_confidences: &mut core::Vector<f32>, component_level: i32) -> Result<()> {
string_arg_output_send!(via output_text_via);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_OCRTesseract_run_MatR_MatR_stringR_vectorLRectGX_vectorLstringGX_vectorLfloatGX_int(self.as_raw_mut_OCRTesseract(), image.as_raw_mut_Mat(), mask.as_raw_mut_Mat(), &mut output_text_via, component_rects.as_raw_mut_VectorOfRect(), component_texts.as_raw_mut_VectorOfString(), component_confidences.as_raw_mut_VectorOff32(), component_level, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
string_arg_output_receive!(output_text_via => output_text);
Ok(ret)
}
#[inline]
fn run(&mut self, image: &impl core::ToInputArray, min_confidence: i32, component_level: i32) -> Result<String> {
input_array_arg!(image);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_OCRTesseract_run_const__InputArrayR_int_int(self.as_raw_mut_OCRTesseract(), image.as_raw__InputArray(), min_confidence, component_level, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { String::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
fn run_mask(&mut self, image: &impl core::ToInputArray, mask: &impl core::ToInputArray, min_confidence: i32, component_level: i32) -> Result<String> {
input_array_arg!(image);
input_array_arg!(mask);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_OCRTesseract_run_const__InputArrayR_const__InputArrayR_int_int(self.as_raw_mut_OCRTesseract(), image.as_raw__InputArray(), mask.as_raw__InputArray(), min_confidence, component_level, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { String::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
fn set_white_list(&mut self, char_whitelist: &str) -> Result<()> {
extern_container_arg!(char_whitelist);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_OCRTesseract_setWhiteList_const_StringR(self.as_raw_mut_OCRTesseract(), char_whitelist.opencv_as_extern(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
}
pub struct OCRTesseract {
ptr: *mut c_void
}
opencv_type_boxed! { OCRTesseract }
impl Drop for OCRTesseract {
#[inline]
fn drop(&mut self) {
unsafe { sys::cv_text_OCRTesseract_delete(self.as_raw_mut_OCRTesseract()) };
}
}
unsafe impl Send for OCRTesseract {}
impl crate::text::BaseOCRTraitConst for OCRTesseract {
#[inline] fn as_raw_BaseOCR(&self) -> *const c_void { self.as_raw() }
}
impl crate::text::BaseOCRTrait for OCRTesseract {
#[inline] fn as_raw_mut_BaseOCR(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl crate::text::OCRTesseractTraitConst for OCRTesseract {
#[inline] fn as_raw_OCRTesseract(&self) -> *const c_void { self.as_raw() }
}
impl crate::text::OCRTesseractTrait for OCRTesseract {
#[inline] fn as_raw_mut_OCRTesseract(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl OCRTesseract {
#[inline]
pub fn create(datapath: &str, language: &str, char_whitelist: &str, oem: i32, psmode: i32) -> Result<core::Ptr<crate::text::OCRTesseract>> {
extern_container_arg!(datapath);
extern_container_arg!(language);
extern_container_arg!(char_whitelist);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_OCRTesseract_create_const_charX_const_charX_const_charX_int_int(datapath.opencv_as_extern(), language.opencv_as_extern(), char_whitelist.opencv_as_extern(), oem, psmode, ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Ptr::<crate::text::OCRTesseract>::opencv_from_extern(ret) };
Ok(ret)
}
}
boxed_cast_base! { OCRTesseract, crate::text::BaseOCR, cv_text_OCRTesseract_to_BaseOCR }
impl std::fmt::Debug for OCRTesseract {
#[inline]
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.debug_struct("OCRTesseract")
.finish()
}
}
pub trait TextDetectorTraitConst {
fn as_raw_TextDetector(&self) -> *const c_void;
}
pub trait TextDetectorTrait: crate::text::TextDetectorTraitConst {
fn as_raw_mut_TextDetector(&mut self) -> *mut c_void;
#[inline]
fn detect(&mut self, input_image: &impl core::ToInputArray, bbox: &mut core::Vector<core::Rect>, confidence: &mut core::Vector<f32>) -> Result<()> {
input_array_arg!(input_image);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_TextDetector_detect_const__InputArrayR_vectorLRectGR_vectorLfloatGR(self.as_raw_mut_TextDetector(), input_image.as_raw__InputArray(), bbox.as_raw_mut_VectorOfRect(), confidence.as_raw_mut_VectorOff32(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
}
pub struct TextDetector {
ptr: *mut c_void
}
opencv_type_boxed! { TextDetector }
impl Drop for TextDetector {
#[inline]
fn drop(&mut self) {
unsafe { sys::cv_text_TextDetector_delete(self.as_raw_mut_TextDetector()) };
}
}
unsafe impl Send for TextDetector {}
impl crate::text::TextDetectorTraitConst for TextDetector {
#[inline] fn as_raw_TextDetector(&self) -> *const c_void { self.as_raw() }
}
impl crate::text::TextDetectorTrait for TextDetector {
#[inline] fn as_raw_mut_TextDetector(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl TextDetector {
}
boxed_cast_descendant! { TextDetector, crate::text::TextDetectorCNN, cv_text_TextDetector_to_TextDetectorCNN }
impl std::fmt::Debug for TextDetector {
#[inline]
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.debug_struct("TextDetector")
.finish()
}
}
pub trait TextDetectorCNNTraitConst: crate::text::TextDetectorTraitConst {
fn as_raw_TextDetectorCNN(&self) -> *const c_void;
}
pub trait TextDetectorCNNTrait: crate::text::TextDetectorCNNTraitConst + crate::text::TextDetectorTrait {
fn as_raw_mut_TextDetectorCNN(&mut self) -> *mut c_void;
#[inline]
fn detect(&mut self, input_image: &impl core::ToInputArray, bbox: &mut core::Vector<core::Rect>, confidence: &mut core::Vector<f32>) -> Result<()> {
input_array_arg!(input_image);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_TextDetectorCNN_detect_const__InputArrayR_vectorLRectGR_vectorLfloatGR(self.as_raw_mut_TextDetectorCNN(), input_image.as_raw__InputArray(), bbox.as_raw_mut_VectorOfRect(), confidence.as_raw_mut_VectorOff32(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
Ok(ret)
}
}
pub struct TextDetectorCNN {
ptr: *mut c_void
}
opencv_type_boxed! { TextDetectorCNN }
impl Drop for TextDetectorCNN {
#[inline]
fn drop(&mut self) {
unsafe { sys::cv_text_TextDetectorCNN_delete(self.as_raw_mut_TextDetectorCNN()) };
}
}
unsafe impl Send for TextDetectorCNN {}
impl crate::text::TextDetectorTraitConst for TextDetectorCNN {
#[inline] fn as_raw_TextDetector(&self) -> *const c_void { self.as_raw() }
}
impl crate::text::TextDetectorTrait for TextDetectorCNN {
#[inline] fn as_raw_mut_TextDetector(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl crate::text::TextDetectorCNNTraitConst for TextDetectorCNN {
#[inline] fn as_raw_TextDetectorCNN(&self) -> *const c_void { self.as_raw() }
}
impl crate::text::TextDetectorCNNTrait for TextDetectorCNN {
#[inline] fn as_raw_mut_TextDetectorCNN(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl TextDetectorCNN {
#[inline]
pub fn create_with_sizes(model_arch_filename: &str, model_weights_filename: &str, mut detection_sizes: core::Vector<core::Size>) -> Result<core::Ptr<crate::text::TextDetectorCNN>> {
extern_container_arg!(model_arch_filename);
extern_container_arg!(model_weights_filename);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_TextDetectorCNN_create_const_StringR_const_StringR_vectorLSizeG(model_arch_filename.opencv_as_extern(), model_weights_filename.opencv_as_extern(), detection_sizes.as_raw_mut_VectorOfSize(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Ptr::<crate::text::TextDetectorCNN>::opencv_from_extern(ret) };
Ok(ret)
}
#[inline]
pub fn create(model_arch_filename: &str, model_weights_filename: &str) -> Result<core::Ptr<crate::text::TextDetectorCNN>> {
extern_container_arg!(model_arch_filename);
extern_container_arg!(model_weights_filename);
return_send!(via ocvrs_return);
unsafe { sys::cv_text_TextDetectorCNN_create_const_StringR_const_StringR(model_arch_filename.opencv_as_extern(), model_weights_filename.opencv_as_extern(), ocvrs_return.as_mut_ptr()) };
return_receive!(unsafe ocvrs_return => ret);
let ret = ret.into_result()?;
let ret = unsafe { core::Ptr::<crate::text::TextDetectorCNN>::opencv_from_extern(ret) };
Ok(ret)
}
}
boxed_cast_base! { TextDetectorCNN, crate::text::TextDetector, cv_text_TextDetectorCNN_to_TextDetector }
impl std::fmt::Debug for TextDetectorCNN {
#[inline]
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.debug_struct("TextDetectorCNN")
.finish()
}
}
}