#![allow(
unused_parens,
clippy::excessive_precision,
clippy::missing_safety_doc,
clippy::not_unsafe_ptr_arg_deref,
clippy::should_implement_trait,
clippy::too_many_arguments,
clippy::unused_unit,
)]
use crate::{mod_prelude::*, core, sys, types};
pub mod prelude {
pub use { super::BackgroundSubtractorMOG, super::BackgroundSubtractorGMG, super::BackgroundSubtractorCNT, super::BackgroundSubtractorGSOC, super::BackgroundSubtractorLSBP, super::BackgroundSubtractorLSBPDescTrait, super::SyntheticSequenceGeneratorTrait };
}
pub const LSBP_CAMERA_MOTION_COMPENSATION_LK: i32 = 1;
pub const LSBP_CAMERA_MOTION_COMPENSATION_NONE: i32 = 0;
#[repr(C)]
#[derive(Copy, Clone, Debug, PartialEq)]
pub enum LSBPCameraMotionCompensation {
LSBP_CAMERA_MOTION_COMPENSATION_NONE = 0,
LSBP_CAMERA_MOTION_COMPENSATION_LK = 1,
}
opencv_type_enum! { crate::bgsegm::LSBPCameraMotionCompensation }
pub fn create_background_subtractor_cnt(min_pixel_stability: i32, use_history: bool, max_pixel_stability: i32, is_parallel: bool) -> Result<core::Ptr::<dyn crate::bgsegm::BackgroundSubtractorCNT>> {
unsafe { sys::cv_bgsegm_createBackgroundSubtractorCNT_int_bool_int_bool(min_pixel_stability, use_history, max_pixel_stability, is_parallel) }.into_result().map(|r| unsafe { core::Ptr::<dyn crate::bgsegm::BackgroundSubtractorCNT>::opencv_from_extern(r) } )
}
pub fn create_background_subtractor_gmg(initialization_frames: i32, decision_threshold: f64) -> Result<core::Ptr::<dyn crate::bgsegm::BackgroundSubtractorGMG>> {
unsafe { sys::cv_bgsegm_createBackgroundSubtractorGMG_int_double(initialization_frames, decision_threshold) }.into_result().map(|r| unsafe { core::Ptr::<dyn crate::bgsegm::BackgroundSubtractorGMG>::opencv_from_extern(r) } )
}
pub fn create_background_subtractor_gsoc(mc: i32, n_samples: i32, replace_rate: f32, propagation_rate: f32, hits_threshold: i32, alpha: f32, beta: f32, blinking_supression_decay: f32, blinking_supression_multiplier: f32, noise_removal_threshold_fac_bg: f32, noise_removal_threshold_fac_fg: f32) -> Result<core::Ptr::<dyn crate::bgsegm::BackgroundSubtractorGSOC>> {
unsafe { sys::cv_bgsegm_createBackgroundSubtractorGSOC_int_int_float_float_int_float_float_float_float_float_float(mc, n_samples, replace_rate, propagation_rate, hits_threshold, alpha, beta, blinking_supression_decay, blinking_supression_multiplier, noise_removal_threshold_fac_bg, noise_removal_threshold_fac_fg) }.into_result().map(|r| unsafe { core::Ptr::<dyn crate::bgsegm::BackgroundSubtractorGSOC>::opencv_from_extern(r) } )
}
pub fn create_background_subtractor_lsbp(mc: i32, n_samples: i32, lsbp_radius: i32, tlower: f32, tupper: f32, tinc: f32, tdec: f32, rscale: f32, rincdec: f32, noise_removal_threshold_fac_bg: f32, noise_removal_threshold_fac_fg: f32, lsb_pthreshold: i32, min_count: i32) -> Result<core::Ptr::<dyn crate::bgsegm::BackgroundSubtractorLSBP>> {
unsafe { sys::cv_bgsegm_createBackgroundSubtractorLSBP_int_int_int_float_float_float_float_float_float_float_float_int_int(mc, n_samples, lsbp_radius, tlower, tupper, tinc, tdec, rscale, rincdec, noise_removal_threshold_fac_bg, noise_removal_threshold_fac_fg, lsb_pthreshold, min_count) }.into_result().map(|r| unsafe { core::Ptr::<dyn crate::bgsegm::BackgroundSubtractorLSBP>::opencv_from_extern(r) } )
}
pub fn create_background_subtractor_mog(history: i32, nmixtures: i32, background_ratio: f64, noise_sigma: f64) -> Result<core::Ptr::<dyn crate::bgsegm::BackgroundSubtractorMOG>> {
unsafe { sys::cv_bgsegm_createBackgroundSubtractorMOG_int_int_double_double(history, nmixtures, background_ratio, noise_sigma) }.into_result().map(|r| unsafe { core::Ptr::<dyn crate::bgsegm::BackgroundSubtractorMOG>::opencv_from_extern(r) } )
}
pub fn create_synthetic_sequence_generator(background: &dyn core::ToInputArray, object: &dyn core::ToInputArray, amplitude: f64, wavelength: f64, wavespeed: f64, objspeed: f64) -> Result<core::Ptr::<crate::bgsegm::SyntheticSequenceGenerator>> {
input_array_arg!(background);
input_array_arg!(object);
unsafe { sys::cv_bgsegm_createSyntheticSequenceGenerator_const__InputArrayR_const__InputArrayR_double_double_double_double(background.as_raw__InputArray(), object.as_raw__InputArray(), amplitude, wavelength, wavespeed, objspeed) }.into_result().map(|r| unsafe { core::Ptr::<crate::bgsegm::SyntheticSequenceGenerator>::opencv_from_extern(r) } )
}
pub trait BackgroundSubtractorCNT: crate::video::BackgroundSubtractor {
fn as_raw_BackgroundSubtractorCNT(&self) -> *const c_void;
fn as_raw_mut_BackgroundSubtractorCNT(&mut self) -> *mut c_void;
fn apply(&mut self, image: &dyn core::ToInputArray, fgmask: &mut dyn core::ToOutputArray, learning_rate: f64) -> Result<()> {
input_array_arg!(image);
output_array_arg!(fgmask);
unsafe { sys::cv_bgsegm_BackgroundSubtractorCNT_apply_const__InputArrayR_const__OutputArrayR_double(self.as_raw_mut_BackgroundSubtractorCNT(), image.as_raw__InputArray(), fgmask.as_raw__OutputArray(), learning_rate) }.into_result()
}
fn get_background_image(&self, background_image: &mut dyn core::ToOutputArray) -> Result<()> {
output_array_arg!(background_image);
unsafe { sys::cv_bgsegm_BackgroundSubtractorCNT_getBackgroundImage_const_const__OutputArrayR(self.as_raw_BackgroundSubtractorCNT(), background_image.as_raw__OutputArray()) }.into_result()
}
fn get_min_pixel_stability(&self) -> Result<i32> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorCNT_getMinPixelStability_const(self.as_raw_BackgroundSubtractorCNT()) }.into_result()
}
fn set_min_pixel_stability(&mut self, value: i32) -> Result<()> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorCNT_setMinPixelStability_int(self.as_raw_mut_BackgroundSubtractorCNT(), value) }.into_result()
}
fn get_max_pixel_stability(&self) -> Result<i32> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorCNT_getMaxPixelStability_const(self.as_raw_BackgroundSubtractorCNT()) }.into_result()
}
fn set_max_pixel_stability(&mut self, value: i32) -> Result<()> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorCNT_setMaxPixelStability_int(self.as_raw_mut_BackgroundSubtractorCNT(), value) }.into_result()
}
fn get_use_history(&self) -> Result<bool> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorCNT_getUseHistory_const(self.as_raw_BackgroundSubtractorCNT()) }.into_result()
}
fn set_use_history(&mut self, value: bool) -> Result<()> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorCNT_setUseHistory_bool(self.as_raw_mut_BackgroundSubtractorCNT(), value) }.into_result()
}
fn get_is_parallel(&self) -> Result<bool> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorCNT_getIsParallel_const(self.as_raw_BackgroundSubtractorCNT()) }.into_result()
}
fn set_is_parallel(&mut self, value: bool) -> Result<()> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorCNT_setIsParallel_bool(self.as_raw_mut_BackgroundSubtractorCNT(), value) }.into_result()
}
}
pub trait BackgroundSubtractorGMG: crate::video::BackgroundSubtractor {
fn as_raw_BackgroundSubtractorGMG(&self) -> *const c_void;
fn as_raw_mut_BackgroundSubtractorGMG(&mut self) -> *mut c_void;
fn get_max_features(&self) -> Result<i32> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorGMG_getMaxFeatures_const(self.as_raw_BackgroundSubtractorGMG()) }.into_result()
}
fn set_max_features(&mut self, max_features: i32) -> Result<()> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorGMG_setMaxFeatures_int(self.as_raw_mut_BackgroundSubtractorGMG(), max_features) }.into_result()
}
fn get_default_learning_rate(&self) -> Result<f64> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorGMG_getDefaultLearningRate_const(self.as_raw_BackgroundSubtractorGMG()) }.into_result()
}
fn set_default_learning_rate(&mut self, lr: f64) -> Result<()> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorGMG_setDefaultLearningRate_double(self.as_raw_mut_BackgroundSubtractorGMG(), lr) }.into_result()
}
fn get_num_frames(&self) -> Result<i32> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorGMG_getNumFrames_const(self.as_raw_BackgroundSubtractorGMG()) }.into_result()
}
fn set_num_frames(&mut self, nframes: i32) -> Result<()> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorGMG_setNumFrames_int(self.as_raw_mut_BackgroundSubtractorGMG(), nframes) }.into_result()
}
fn get_quantization_levels(&self) -> Result<i32> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorGMG_getQuantizationLevels_const(self.as_raw_BackgroundSubtractorGMG()) }.into_result()
}
fn set_quantization_levels(&mut self, nlevels: i32) -> Result<()> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorGMG_setQuantizationLevels_int(self.as_raw_mut_BackgroundSubtractorGMG(), nlevels) }.into_result()
}
fn get_background_prior(&self) -> Result<f64> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorGMG_getBackgroundPrior_const(self.as_raw_BackgroundSubtractorGMG()) }.into_result()
}
fn set_background_prior(&mut self, bgprior: f64) -> Result<()> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorGMG_setBackgroundPrior_double(self.as_raw_mut_BackgroundSubtractorGMG(), bgprior) }.into_result()
}
fn get_smoothing_radius(&self) -> Result<i32> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorGMG_getSmoothingRadius_const(self.as_raw_BackgroundSubtractorGMG()) }.into_result()
}
fn set_smoothing_radius(&mut self, radius: i32) -> Result<()> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorGMG_setSmoothingRadius_int(self.as_raw_mut_BackgroundSubtractorGMG(), radius) }.into_result()
}
fn get_decision_threshold(&self) -> Result<f64> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorGMG_getDecisionThreshold_const(self.as_raw_BackgroundSubtractorGMG()) }.into_result()
}
fn set_decision_threshold(&mut self, thresh: f64) -> Result<()> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorGMG_setDecisionThreshold_double(self.as_raw_mut_BackgroundSubtractorGMG(), thresh) }.into_result()
}
fn get_update_background_model(&self) -> Result<bool> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorGMG_getUpdateBackgroundModel_const(self.as_raw_BackgroundSubtractorGMG()) }.into_result()
}
fn set_update_background_model(&mut self, update: bool) -> Result<()> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorGMG_setUpdateBackgroundModel_bool(self.as_raw_mut_BackgroundSubtractorGMG(), update) }.into_result()
}
fn get_min_val(&self) -> Result<f64> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorGMG_getMinVal_const(self.as_raw_BackgroundSubtractorGMG()) }.into_result()
}
fn set_min_val(&mut self, val: f64) -> Result<()> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorGMG_setMinVal_double(self.as_raw_mut_BackgroundSubtractorGMG(), val) }.into_result()
}
fn get_max_val(&self) -> Result<f64> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorGMG_getMaxVal_const(self.as_raw_BackgroundSubtractorGMG()) }.into_result()
}
fn set_max_val(&mut self, val: f64) -> Result<()> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorGMG_setMaxVal_double(self.as_raw_mut_BackgroundSubtractorGMG(), val) }.into_result()
}
}
pub trait BackgroundSubtractorGSOC: crate::video::BackgroundSubtractor {
fn as_raw_BackgroundSubtractorGSOC(&self) -> *const c_void;
fn as_raw_mut_BackgroundSubtractorGSOC(&mut self) -> *mut c_void;
fn apply(&mut self, image: &dyn core::ToInputArray, fgmask: &mut dyn core::ToOutputArray, learning_rate: f64) -> Result<()> {
input_array_arg!(image);
output_array_arg!(fgmask);
unsafe { sys::cv_bgsegm_BackgroundSubtractorGSOC_apply_const__InputArrayR_const__OutputArrayR_double(self.as_raw_mut_BackgroundSubtractorGSOC(), image.as_raw__InputArray(), fgmask.as_raw__OutputArray(), learning_rate) }.into_result()
}
fn get_background_image(&self, background_image: &mut dyn core::ToOutputArray) -> Result<()> {
output_array_arg!(background_image);
unsafe { sys::cv_bgsegm_BackgroundSubtractorGSOC_getBackgroundImage_const_const__OutputArrayR(self.as_raw_BackgroundSubtractorGSOC(), background_image.as_raw__OutputArray()) }.into_result()
}
}
pub trait BackgroundSubtractorLSBP: crate::video::BackgroundSubtractor {
fn as_raw_BackgroundSubtractorLSBP(&self) -> *const c_void;
fn as_raw_mut_BackgroundSubtractorLSBP(&mut self) -> *mut c_void;
fn apply(&mut self, image: &dyn core::ToInputArray, fgmask: &mut dyn core::ToOutputArray, learning_rate: f64) -> Result<()> {
input_array_arg!(image);
output_array_arg!(fgmask);
unsafe { sys::cv_bgsegm_BackgroundSubtractorLSBP_apply_const__InputArrayR_const__OutputArrayR_double(self.as_raw_mut_BackgroundSubtractorLSBP(), image.as_raw__InputArray(), fgmask.as_raw__OutputArray(), learning_rate) }.into_result()
}
fn get_background_image(&self, background_image: &mut dyn core::ToOutputArray) -> Result<()> {
output_array_arg!(background_image);
unsafe { sys::cv_bgsegm_BackgroundSubtractorLSBP_getBackgroundImage_const_const__OutputArrayR(self.as_raw_BackgroundSubtractorLSBP(), background_image.as_raw__OutputArray()) }.into_result()
}
}
pub trait BackgroundSubtractorLSBPDescTrait {
fn as_raw_BackgroundSubtractorLSBPDesc(&self) -> *const c_void;
fn as_raw_mut_BackgroundSubtractorLSBPDesc(&mut self) -> *mut c_void;
}
pub struct BackgroundSubtractorLSBPDesc {
ptr: *mut c_void
}
opencv_type_boxed! { BackgroundSubtractorLSBPDesc }
impl Drop for BackgroundSubtractorLSBPDesc {
fn drop(&mut self) {
extern "C" { fn cv_BackgroundSubtractorLSBPDesc_delete(instance: *mut c_void); }
unsafe { cv_BackgroundSubtractorLSBPDesc_delete(self.as_raw_mut_BackgroundSubtractorLSBPDesc()) };
}
}
impl BackgroundSubtractorLSBPDesc {
#[inline] pub fn as_raw_BackgroundSubtractorLSBPDesc(&self) -> *const c_void { self.as_raw() }
#[inline] pub fn as_raw_mut_BackgroundSubtractorLSBPDesc(&mut self) -> *mut c_void { self.as_raw_mut() }
}
unsafe impl Send for BackgroundSubtractorLSBPDesc {}
impl crate::bgsegm::BackgroundSubtractorLSBPDescTrait for BackgroundSubtractorLSBPDesc {
#[inline] fn as_raw_BackgroundSubtractorLSBPDesc(&self) -> *const c_void { self.as_raw() }
#[inline] fn as_raw_mut_BackgroundSubtractorLSBPDesc(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl BackgroundSubtractorLSBPDesc {
pub fn calc_local_svd_values(local_svd_values: &mut dyn core::ToOutputArray, frame: &core::Mat) -> Result<()> {
output_array_arg!(local_svd_values);
unsafe { sys::cv_bgsegm_BackgroundSubtractorLSBPDesc_calcLocalSVDValues_const__OutputArrayR_const_MatR(local_svd_values.as_raw__OutputArray(), frame.as_raw_Mat()) }.into_result()
}
pub fn compute_from_local_svd_values(desc: &mut dyn core::ToOutputArray, local_svd_values: &core::Mat, lsbp_sample_points: &core::Point2i) -> Result<()> {
output_array_arg!(desc);
unsafe { sys::cv_bgsegm_BackgroundSubtractorLSBPDesc_computeFromLocalSVDValues_const__OutputArrayR_const_MatR_const_Point2iX(desc.as_raw__OutputArray(), local_svd_values.as_raw_Mat(), lsbp_sample_points) }.into_result()
}
pub fn compute(desc: &mut dyn core::ToOutputArray, frame: &core::Mat, lsbp_sample_points: &core::Point2i) -> Result<()> {
output_array_arg!(desc);
unsafe { sys::cv_bgsegm_BackgroundSubtractorLSBPDesc_compute_const__OutputArrayR_const_MatR_const_Point2iX(desc.as_raw__OutputArray(), frame.as_raw_Mat(), lsbp_sample_points) }.into_result()
}
}
pub trait BackgroundSubtractorMOG: crate::video::BackgroundSubtractor {
fn as_raw_BackgroundSubtractorMOG(&self) -> *const c_void;
fn as_raw_mut_BackgroundSubtractorMOG(&mut self) -> *mut c_void;
fn get_history(&self) -> Result<i32> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorMOG_getHistory_const(self.as_raw_BackgroundSubtractorMOG()) }.into_result()
}
fn set_history(&mut self, nframes: i32) -> Result<()> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorMOG_setHistory_int(self.as_raw_mut_BackgroundSubtractorMOG(), nframes) }.into_result()
}
fn get_n_mixtures(&self) -> Result<i32> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorMOG_getNMixtures_const(self.as_raw_BackgroundSubtractorMOG()) }.into_result()
}
fn set_n_mixtures(&mut self, nmix: i32) -> Result<()> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorMOG_setNMixtures_int(self.as_raw_mut_BackgroundSubtractorMOG(), nmix) }.into_result()
}
fn get_background_ratio(&self) -> Result<f64> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorMOG_getBackgroundRatio_const(self.as_raw_BackgroundSubtractorMOG()) }.into_result()
}
fn set_background_ratio(&mut self, background_ratio: f64) -> Result<()> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorMOG_setBackgroundRatio_double(self.as_raw_mut_BackgroundSubtractorMOG(), background_ratio) }.into_result()
}
fn get_noise_sigma(&self) -> Result<f64> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorMOG_getNoiseSigma_const(self.as_raw_BackgroundSubtractorMOG()) }.into_result()
}
fn set_noise_sigma(&mut self, noise_sigma: f64) -> Result<()> {
unsafe { sys::cv_bgsegm_BackgroundSubtractorMOG_setNoiseSigma_double(self.as_raw_mut_BackgroundSubtractorMOG(), noise_sigma) }.into_result()
}
}
pub trait SyntheticSequenceGeneratorTrait: core::AlgorithmTrait {
fn as_raw_SyntheticSequenceGenerator(&self) -> *const c_void;
fn as_raw_mut_SyntheticSequenceGenerator(&mut self) -> *mut c_void;
fn get_next_frame(&mut self, frame: &mut dyn core::ToOutputArray, gt_mask: &mut dyn core::ToOutputArray) -> Result<()> {
output_array_arg!(frame);
output_array_arg!(gt_mask);
unsafe { sys::cv_bgsegm_SyntheticSequenceGenerator_getNextFrame_const__OutputArrayR_const__OutputArrayR(self.as_raw_mut_SyntheticSequenceGenerator(), frame.as_raw__OutputArray(), gt_mask.as_raw__OutputArray()) }.into_result()
}
}
pub struct SyntheticSequenceGenerator {
ptr: *mut c_void
}
opencv_type_boxed! { SyntheticSequenceGenerator }
impl Drop for SyntheticSequenceGenerator {
fn drop(&mut self) {
extern "C" { fn cv_SyntheticSequenceGenerator_delete(instance: *mut c_void); }
unsafe { cv_SyntheticSequenceGenerator_delete(self.as_raw_mut_SyntheticSequenceGenerator()) };
}
}
impl SyntheticSequenceGenerator {
#[inline] pub fn as_raw_SyntheticSequenceGenerator(&self) -> *const c_void { self.as_raw() }
#[inline] pub fn as_raw_mut_SyntheticSequenceGenerator(&mut self) -> *mut c_void { self.as_raw_mut() }
}
unsafe impl Send for SyntheticSequenceGenerator {}
impl core::AlgorithmTrait for SyntheticSequenceGenerator {
#[inline] fn as_raw_Algorithm(&self) -> *const c_void { self.as_raw() }
#[inline] fn as_raw_mut_Algorithm(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl crate::bgsegm::SyntheticSequenceGeneratorTrait for SyntheticSequenceGenerator {
#[inline] fn as_raw_SyntheticSequenceGenerator(&self) -> *const c_void { self.as_raw() }
#[inline] fn as_raw_mut_SyntheticSequenceGenerator(&mut self) -> *mut c_void { self.as_raw_mut() }
}
impl SyntheticSequenceGenerator {
pub fn new(background: &dyn core::ToInputArray, object: &dyn core::ToInputArray, amplitude: f64, wavelength: f64, wavespeed: f64, objspeed: f64) -> Result<crate::bgsegm::SyntheticSequenceGenerator> {
input_array_arg!(background);
input_array_arg!(object);
unsafe { sys::cv_bgsegm_SyntheticSequenceGenerator_SyntheticSequenceGenerator_const__InputArrayR_const__InputArrayR_double_double_double_double(background.as_raw__InputArray(), object.as_raw__InputArray(), amplitude, wavelength, wavespeed, objspeed) }.into_result().map(|r| unsafe { crate::bgsegm::SyntheticSequenceGenerator::opencv_from_extern(r) } )
}
}