use std::os::raw::{c_char, c_void};
use libc::{ptrdiff_t, size_t};
use crate::{Error, Result, core, sys, types};
use crate::core::{_InputArray, _OutputArray};
pub const RETINA_COLOR_BAYER: i32 = 2;
pub const RETINA_COLOR_DIAGONAL: i32 = 1;
pub const RETINA_COLOR_RANDOM: i32 = 0;
pub fn create_retina_fast_tone_mapping(input_size: core::Size) -> Result<types::PtrOfRetinaFastToneMapping> {
unsafe { sys::cv_bioinspired_createRetinaFastToneMapping_Size(input_size) }.into_result().map(|ptr| types::PtrOfRetinaFastToneMapping { ptr })
}
pub fn create_retina_ocl(input_size: core::Size) -> Result<types::PtrOfRetina> {
unsafe { sys::cv_bioinspired_createRetina_OCL_Size(input_size) }.into_result().map(|ptr| types::PtrOfRetina { ptr })
}
pub fn create_retina_ocl_ext(input_size: core::Size, color_mode: bool, color_sampling_method: i32, use_retina_log_sampling: bool, reduction_factor: f32, sampling_strenght: f32) -> Result<types::PtrOfRetina> {
unsafe { sys::cv_bioinspired_createRetina_OCL_Size_bool_int_bool_float_float(input_size, color_mode, color_sampling_method, use_retina_log_sampling, reduction_factor, sampling_strenght) }.into_result().map(|ptr| types::PtrOfRetina { ptr })
}
pub fn create_retina(input_size: core::Size) -> Result<types::PtrOfRetina> {
unsafe { sys::cv_bioinspired_createRetina_Size(input_size) }.into_result().map(|ptr| types::PtrOfRetina { ptr })
}
pub fn create_retina_1(input_size: core::Size, color_mode: bool, color_sampling_method: i32, use_retina_log_sampling: bool, reduction_factor: f32, sampling_strenght: f32) -> Result<types::PtrOfRetina> {
unsafe { sys::cv_bioinspired_createRetina_Size_bool_int_bool_float_float(input_size, color_mode, color_sampling_method, use_retina_log_sampling, reduction_factor, sampling_strenght) }.into_result().map(|ptr| types::PtrOfRetina { ptr })
}
pub fn create_transient_areas_segmentation_module(input_size: core::Size) -> Result<types::PtrOfTransientAreasSegmentationModule> {
unsafe { sys::cv_bioinspired_createTransientAreasSegmentationModule_Size(input_size) }.into_result().map(|ptr| types::PtrOfTransientAreasSegmentationModule { ptr })
}
pub trait Retina: core::Algorithm {
#[inline(always)] fn as_raw_Retina(&self) -> *mut c_void;
fn get_input_size(&mut self) -> Result<core::Size> {
unsafe { sys::cv_bioinspired_Retina_getInputSize(self.as_raw_Retina()) }.into_result()
}
fn get_output_size(&mut self) -> Result<core::Size> {
unsafe { sys::cv_bioinspired_Retina_getOutputSize(self.as_raw_Retina()) }.into_result()
}
fn setup_from_file(&mut self, retina_parameter_file: &str, apply_default_setup_on_failure: bool) -> Result<()> {
string_arg!(mut retina_parameter_file);
unsafe { sys::cv_bioinspired_Retina_setup_String_bool(self.as_raw_Retina(), retina_parameter_file.as_ptr() as _, apply_default_setup_on_failure) }.into_result()
}
fn setup(&mut self, fs: &mut core::FileStorage, apply_default_setup_on_failure: bool) -> Result<()> {
unsafe { sys::cv_bioinspired_Retina_setup_FileStorage_bool(self.as_raw_Retina(), fs.as_raw_FileStorage(), apply_default_setup_on_failure) }.into_result()
}
fn setup_1(&mut self, new_parameters: &crate::bioinspired::RetinaParameters) -> Result<()> {
unsafe { sys::cv_bioinspired_Retina_setup_RetinaParameters(self.as_raw_Retina(), new_parameters.as_raw_RetinaParameters()) }.into_result()
}
fn get_parameters(&mut self) -> Result<crate::bioinspired::RetinaParameters> {
unsafe { sys::cv_bioinspired_Retina_getParameters(self.as_raw_Retina()) }.into_result().map(|ptr| crate::bioinspired::RetinaParameters { ptr })
}
fn print_setup(&mut self) -> Result<String> {
unsafe { sys::cv_bioinspired_Retina_printSetup(self.as_raw_Retina()) }.into_result().map(crate::templ::receive_string)
}
fn write(&self, fs: &str) -> Result<()> {
string_arg!(mut fs);
unsafe { sys::cv_bioinspired_Retina_write_const_String(self.as_raw_Retina(), fs.as_ptr() as _) }.into_result()
}
fn write_1(&self, fs: &mut core::FileStorage) -> Result<()> {
unsafe { sys::cv_bioinspired_Retina_write_const_FileStorage(self.as_raw_Retina(), fs.as_raw_FileStorage()) }.into_result()
}
fn setup_op_land_ipl_parvo_channel(&mut self, color_mode: bool, normalise_output: bool, photoreceptors_local_adaptation_sensitivity: f32, photoreceptors_temporal_constant: f32, photoreceptors_spatial_constant: f32, horizontal_cells_gain: f32, hcells_temporal_constant: f32, hcells_spatial_constant: f32, ganglion_cells_sensitivity: f32) -> Result<()> {
unsafe { sys::cv_bioinspired_Retina_setupOPLandIPLParvoChannel_bool_bool_float_float_float_float_float_float_float(self.as_raw_Retina(), color_mode, normalise_output, photoreceptors_local_adaptation_sensitivity, photoreceptors_temporal_constant, photoreceptors_spatial_constant, horizontal_cells_gain, hcells_temporal_constant, hcells_spatial_constant, ganglion_cells_sensitivity) }.into_result()
}
fn setup_ipl_magno_channel(&mut self, normalise_output: bool, parasol_cells_beta: f32, parasol_cells_tau: f32, parasol_cells_k: f32, amacrin_cells_temporal_cut_frequency: f32, v0_compression_parameter: f32, local_adaptintegration_tau: f32, local_adaptintegration_k: f32) -> Result<()> {
unsafe { sys::cv_bioinspired_Retina_setupIPLMagnoChannel_bool_float_float_float_float_float_float_float(self.as_raw_Retina(), normalise_output, parasol_cells_beta, parasol_cells_tau, parasol_cells_k, amacrin_cells_temporal_cut_frequency, v0_compression_parameter, local_adaptintegration_tau, local_adaptintegration_k) }.into_result()
}
fn run(&mut self, input_image: &dyn core::ToInputArray) -> Result<()> {
input_array_arg!(input_image);
unsafe { sys::cv_bioinspired_Retina_run__InputArray(self.as_raw_Retina(), input_image.as_raw__InputArray()) }.into_result()
}
fn apply_fast_tone_mapping(&mut self, input_image: &dyn core::ToInputArray, output_tone_mapped_image: &mut dyn core::ToOutputArray) -> Result<()> {
input_array_arg!(input_image);
output_array_arg!(output_tone_mapped_image);
unsafe { sys::cv_bioinspired_Retina_applyFastToneMapping__InputArray__OutputArray(self.as_raw_Retina(), input_image.as_raw__InputArray(), output_tone_mapped_image.as_raw__OutputArray()) }.into_result()
}
fn get_parvo(&mut self, retina_output_parvo: &mut dyn core::ToOutputArray) -> Result<()> {
output_array_arg!(retina_output_parvo);
unsafe { sys::cv_bioinspired_Retina_getParvo__OutputArray(self.as_raw_Retina(), retina_output_parvo.as_raw__OutputArray()) }.into_result()
}
fn get_parvo_raw_to(&mut self, retina_output_parvo: &mut dyn core::ToOutputArray) -> Result<()> {
output_array_arg!(retina_output_parvo);
unsafe { sys::cv_bioinspired_Retina_getParvoRAW__OutputArray(self.as_raw_Retina(), retina_output_parvo.as_raw__OutputArray()) }.into_result()
}
fn get_magno(&mut self, retina_output_magno: &mut dyn core::ToOutputArray) -> Result<()> {
output_array_arg!(retina_output_magno);
unsafe { sys::cv_bioinspired_Retina_getMagno__OutputArray(self.as_raw_Retina(), retina_output_magno.as_raw__OutputArray()) }.into_result()
}
fn get_magno_raw_to(&mut self, retina_output_magno: &mut dyn core::ToOutputArray) -> Result<()> {
output_array_arg!(retina_output_magno);
unsafe { sys::cv_bioinspired_Retina_getMagnoRAW__OutputArray(self.as_raw_Retina(), retina_output_magno.as_raw__OutputArray()) }.into_result()
}
fn get_magno_raw(&self) -> Result<core::Mat> {
unsafe { sys::cv_bioinspired_Retina_getMagnoRAW_const(self.as_raw_Retina()) }.into_result().map(|ptr| core::Mat { ptr })
}
fn get_parvo_raw(&self) -> Result<core::Mat> {
unsafe { sys::cv_bioinspired_Retina_getParvoRAW_const(self.as_raw_Retina()) }.into_result().map(|ptr| core::Mat { ptr })
}
fn set_color_saturation(&mut self, saturate_colors: bool, color_saturation_value: f32) -> Result<()> {
unsafe { sys::cv_bioinspired_Retina_setColorSaturation_bool_float(self.as_raw_Retina(), saturate_colors, color_saturation_value) }.into_result()
}
fn clear_buffers(&mut self) -> Result<()> {
unsafe { sys::cv_bioinspired_Retina_clearBuffers(self.as_raw_Retina()) }.into_result()
}
fn activate_moving_contours_processing(&mut self, activate: bool) -> Result<()> {
unsafe { sys::cv_bioinspired_Retina_activateMovingContoursProcessing_bool(self.as_raw_Retina(), activate) }.into_result()
}
fn activate_contours_processing(&mut self, activate: bool) -> Result<()> {
unsafe { sys::cv_bioinspired_Retina_activateContoursProcessing_bool(self.as_raw_Retina(), activate) }.into_result()
}
}
pub trait RetinaFastToneMapping: core::Algorithm {
#[inline(always)] fn as_raw_RetinaFastToneMapping(&self) -> *mut c_void;
fn apply_fast_tone_mapping(&mut self, input_image: &dyn core::ToInputArray, output_tone_mapped_image: &mut dyn core::ToOutputArray) -> Result<()> {
input_array_arg!(input_image);
output_array_arg!(output_tone_mapped_image);
unsafe { sys::cv_bioinspired_RetinaFastToneMapping_applyFastToneMapping__InputArray__OutputArray(self.as_raw_RetinaFastToneMapping(), input_image.as_raw__InputArray(), output_tone_mapped_image.as_raw__OutputArray()) }.into_result()
}
fn setup(&mut self, photoreceptors_neighborhood_radius: f32, ganglioncells_neighborhood_radius: f32, mean_luminance_modulator_k: f32) -> Result<()> {
unsafe { sys::cv_bioinspired_RetinaFastToneMapping_setup_float_float_float(self.as_raw_RetinaFastToneMapping(), photoreceptors_neighborhood_radius, ganglioncells_neighborhood_radius, mean_luminance_modulator_k) }.into_result()
}
}
pub struct RetinaParameters {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for crate::bioinspired::RetinaParameters {
fn drop(&mut self) {
unsafe { sys::cv_RetinaParameters_delete(self.ptr) };
}
}
impl crate::bioinspired::RetinaParameters {
#[inline(always)] pub fn as_raw_RetinaParameters(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for RetinaParameters {}
pub struct RetinaParameters_IplMagnoParameters {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for crate::bioinspired::RetinaParameters_IplMagnoParameters {
fn drop(&mut self) {
unsafe { sys::cv_RetinaParameters_IplMagnoParameters_delete(self.ptr) };
}
}
impl crate::bioinspired::RetinaParameters_IplMagnoParameters {
#[inline(always)] pub fn as_raw_RetinaParameters_IplMagnoParameters(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for RetinaParameters_IplMagnoParameters {}
impl RetinaParameters_IplMagnoParameters {
pub fn default() -> Result<crate::bioinspired::RetinaParameters_IplMagnoParameters> {
unsafe { sys::cv_bioinspired_RetinaParameters_IplMagnoParameters_IplMagnoParameters() }.into_result().map(|ptr| crate::bioinspired::RetinaParameters_IplMagnoParameters { ptr })
}
}
pub struct RetinaParameters_OPLandIplParvoParameters {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for crate::bioinspired::RetinaParameters_OPLandIplParvoParameters {
fn drop(&mut self) {
unsafe { sys::cv_RetinaParameters_OPLandIplParvoParameters_delete(self.ptr) };
}
}
impl crate::bioinspired::RetinaParameters_OPLandIplParvoParameters {
#[inline(always)] pub fn as_raw_RetinaParameters_OPLandIplParvoParameters(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for RetinaParameters_OPLandIplParvoParameters {}
impl RetinaParameters_OPLandIplParvoParameters {
pub fn default() -> Result<crate::bioinspired::RetinaParameters_OPLandIplParvoParameters> {
unsafe { sys::cv_bioinspired_RetinaParameters_OPLandIplParvoParameters_OPLandIplParvoParameters() }.into_result().map(|ptr| crate::bioinspired::RetinaParameters_OPLandIplParvoParameters { ptr })
}
}
pub struct SegmentationParameters {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for crate::bioinspired::SegmentationParameters {
fn drop(&mut self) {
unsafe { sys::cv_SegmentationParameters_delete(self.ptr) };
}
}
impl crate::bioinspired::SegmentationParameters {
#[inline(always)] pub fn as_raw_SegmentationParameters(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for SegmentationParameters {}
impl SegmentationParameters {
pub fn default() -> Result<crate::bioinspired::SegmentationParameters> {
unsafe { sys::cv_bioinspired_SegmentationParameters_SegmentationParameters() }.into_result().map(|ptr| crate::bioinspired::SegmentationParameters { ptr })
}
}
pub trait TransientAreasSegmentationModule: core::Algorithm {
#[inline(always)] fn as_raw_TransientAreasSegmentationModule(&self) -> *mut c_void;
fn get_size(&mut self) -> Result<core::Size> {
unsafe { sys::cv_bioinspired_TransientAreasSegmentationModule_getSize(self.as_raw_TransientAreasSegmentationModule()) }.into_result()
}
fn setup_from_file(&mut self, segmentation_parameter_file: &str, apply_default_setup_on_failure: bool) -> Result<()> {
string_arg!(mut segmentation_parameter_file);
unsafe { sys::cv_bioinspired_TransientAreasSegmentationModule_setup_String_bool(self.as_raw_TransientAreasSegmentationModule(), segmentation_parameter_file.as_ptr() as _, apply_default_setup_on_failure) }.into_result()
}
fn setup(&mut self, fs: &mut core::FileStorage, apply_default_setup_on_failure: bool) -> Result<()> {
unsafe { sys::cv_bioinspired_TransientAreasSegmentationModule_setup_FileStorage_bool(self.as_raw_TransientAreasSegmentationModule(), fs.as_raw_FileStorage(), apply_default_setup_on_failure) }.into_result()
}
fn setup_1(&mut self, new_parameters: &crate::bioinspired::SegmentationParameters) -> Result<()> {
unsafe { sys::cv_bioinspired_TransientAreasSegmentationModule_setup_SegmentationParameters(self.as_raw_TransientAreasSegmentationModule(), new_parameters.as_raw_SegmentationParameters()) }.into_result()
}
fn get_parameters(&mut self) -> Result<crate::bioinspired::SegmentationParameters> {
unsafe { sys::cv_bioinspired_TransientAreasSegmentationModule_getParameters(self.as_raw_TransientAreasSegmentationModule()) }.into_result().map(|ptr| crate::bioinspired::SegmentationParameters { ptr })
}
fn print_setup(&mut self) -> Result<String> {
unsafe { sys::cv_bioinspired_TransientAreasSegmentationModule_printSetup(self.as_raw_TransientAreasSegmentationModule()) }.into_result().map(crate::templ::receive_string)
}
fn write(&self, fs: &str) -> Result<()> {
string_arg!(mut fs);
unsafe { sys::cv_bioinspired_TransientAreasSegmentationModule_write_const_String(self.as_raw_TransientAreasSegmentationModule(), fs.as_ptr() as _) }.into_result()
}
fn write_1(&self, fs: &mut core::FileStorage) -> Result<()> {
unsafe { sys::cv_bioinspired_TransientAreasSegmentationModule_write_const_FileStorage(self.as_raw_TransientAreasSegmentationModule(), fs.as_raw_FileStorage()) }.into_result()
}
fn run(&mut self, input_to_segment: &dyn core::ToInputArray, channel_index: i32) -> Result<()> {
input_array_arg!(input_to_segment);
unsafe { sys::cv_bioinspired_TransientAreasSegmentationModule_run__InputArray_int(self.as_raw_TransientAreasSegmentationModule(), input_to_segment.as_raw__InputArray(), channel_index) }.into_result()
}
fn get_segmentation_picture(&mut self, transient_areas: &mut dyn core::ToOutputArray) -> Result<()> {
output_array_arg!(transient_areas);
unsafe { sys::cv_bioinspired_TransientAreasSegmentationModule_getSegmentationPicture__OutputArray(self.as_raw_TransientAreasSegmentationModule(), transient_areas.as_raw__OutputArray()) }.into_result()
}
fn clear_all_buffers(&mut self) -> Result<()> {
unsafe { sys::cv_bioinspired_TransientAreasSegmentationModule_clearAllBuffers(self.as_raw_TransientAreasSegmentationModule()) }.into_result()
}
}