use crate::{mod_prelude::*, core, sys, types};
use crate::core::{_InputArrayTrait, _OutputArrayTrait};
pub fn create_eigen_face_recognizer(num_components: i32, threshold: f64) -> Result<types::PtrOfBasicFaceRecognizer> {
unsafe { sys::cv_face_createEigenFaceRecognizer_int_double(num_components, threshold) }.into_result().map(|ptr| types::PtrOfBasicFaceRecognizer { ptr })
}
pub fn create_fisher_face_recognizer(num_components: i32, threshold: f64) -> Result<types::PtrOfBasicFaceRecognizer> {
unsafe { sys::cv_face_createFisherFaceRecognizer_int_double(num_components, threshold) }.into_result().map(|ptr| types::PtrOfBasicFaceRecognizer { ptr })
}
pub fn create_lbph_face_recognizer(radius: i32, neighbors: i32, grid_x: i32, grid_y: i32, threshold: f64) -> Result<types::PtrOfLBPHFaceRecognizer> {
unsafe { sys::cv_face_createLBPHFaceRecognizer_int_int_int_int_double(radius, neighbors, grid_x, grid_y, threshold) }.into_result().map(|ptr| types::PtrOfLBPHFaceRecognizer { ptr })
}
pub trait BIF: core::AlgorithmTrait {
fn as_raw_BIF(&self) -> *mut c_void;
fn get_num_bands(&self) -> Result<i32> {
unsafe { sys::cv_face_BIF_getNumBands_const(self.as_raw_BIF()) }.into_result()
}
fn get_num_rotations(&self) -> Result<i32> {
unsafe { sys::cv_face_BIF_getNumRotations_const(self.as_raw_BIF()) }.into_result()
}
fn compute(&self, image: &dyn core::ToInputArray, features: &mut dyn core::ToOutputArray) -> Result<()> {
input_array_arg!(image);
output_array_arg!(features);
unsafe { sys::cv_face_BIF_compute_const__InputArray__OutputArray(self.as_raw_BIF(), image.as_raw__InputArray(), features.as_raw__OutputArray()) }.into_result()
}
}
pub trait BasicFaceRecognizer: crate::face::FaceRecognizer {
fn as_raw_BasicFaceRecognizer(&self) -> *mut c_void;
fn get_num_components(&self) -> Result<i32> {
unsafe { sys::cv_face_BasicFaceRecognizer_getNumComponents_const(self.as_raw_BasicFaceRecognizer()) }.into_result()
}
fn set_num_components(&mut self, val: i32) -> Result<()> {
unsafe { sys::cv_face_BasicFaceRecognizer_setNumComponents_int(self.as_raw_BasicFaceRecognizer(), val) }.into_result()
}
fn get_threshold(&self) -> Result<f64> {
unsafe { sys::cv_face_BasicFaceRecognizer_getThreshold_const(self.as_raw_BasicFaceRecognizer()) }.into_result()
}
fn set_threshold(&mut self, val: f64) -> Result<()> {
unsafe { sys::cv_face_BasicFaceRecognizer_setThreshold_double(self.as_raw_BasicFaceRecognizer(), val) }.into_result()
}
fn get_projections(&self) -> Result<types::VectorOfMat> {
unsafe { sys::cv_face_BasicFaceRecognizer_getProjections_const(self.as_raw_BasicFaceRecognizer()) }.into_result().map(|ptr| types::VectorOfMat { ptr })
}
fn get_labels(&self) -> Result<core::Mat> {
unsafe { sys::cv_face_BasicFaceRecognizer_getLabels_const(self.as_raw_BasicFaceRecognizer()) }.into_result().map(|ptr| core::Mat { ptr })
}
fn get_eigen_values(&self) -> Result<core::Mat> {
unsafe { sys::cv_face_BasicFaceRecognizer_getEigenValues_const(self.as_raw_BasicFaceRecognizer()) }.into_result().map(|ptr| core::Mat { ptr })
}
fn get_eigen_vectors(&self) -> Result<core::Mat> {
unsafe { sys::cv_face_BasicFaceRecognizer_getEigenVectors_const(self.as_raw_BasicFaceRecognizer()) }.into_result().map(|ptr| core::Mat { ptr })
}
fn get_mean(&self) -> Result<core::Mat> {
unsafe { sys::cv_face_BasicFaceRecognizer_getMean_const(self.as_raw_BasicFaceRecognizer()) }.into_result().map(|ptr| core::Mat { ptr })
}
}
pub trait FaceRecognizer: core::AlgorithmTrait {
fn as_raw_FaceRecognizer(&self) -> *mut c_void;
fn train(&mut self, src: &dyn core::ToInputArray, labels: &dyn core::ToInputArray) -> Result<()> {
input_array_arg!(src);
input_array_arg!(labels);
unsafe { sys::cv_face_FaceRecognizer_train__InputArray__InputArray(self.as_raw_FaceRecognizer(), src.as_raw__InputArray(), labels.as_raw__InputArray()) }.into_result()
}
fn update(&mut self, src: &dyn core::ToInputArray, labels: &dyn core::ToInputArray) -> Result<()> {
input_array_arg!(src);
input_array_arg!(labels);
unsafe { sys::cv_face_FaceRecognizer_update__InputArray__InputArray(self.as_raw_FaceRecognizer(), src.as_raw__InputArray(), labels.as_raw__InputArray()) }.into_result()
}
fn predict(&self, src: &dyn core::ToInputArray) -> Result<i32> {
input_array_arg!(src);
unsafe { sys::cv_face_FaceRecognizer_predict_const__InputArray(self.as_raw_FaceRecognizer(), src.as_raw__InputArray()) }.into_result()
}
fn predict_1(&self, src: &dyn core::ToInputArray, label: &mut i32, confidence: &mut f64) -> Result<()> {
input_array_arg!(src);
unsafe { sys::cv_face_FaceRecognizer_predict_const__InputArray_int_double(self.as_raw_FaceRecognizer(), src.as_raw__InputArray(), label, confidence) }.into_result()
}
fn save(&self, filename: &str) -> Result<()> {
string_arg!(filename);
unsafe { sys::cv_face_FaceRecognizer_save_const_String(self.as_raw_FaceRecognizer(), filename.as_ptr()) }.into_result()
}
fn load(&mut self, filename: &str) -> Result<()> {
string_arg!(filename);
unsafe { sys::cv_face_FaceRecognizer_load_String(self.as_raw_FaceRecognizer(), filename.as_ptr()) }.into_result()
}
fn save_1(&self, fs: &mut core::FileStorage) -> Result<()> {
unsafe { sys::cv_face_FaceRecognizer_save_const_FileStorage(self.as_raw_FaceRecognizer(), fs.as_raw_FileStorage()) }.into_result()
}
fn load_1(&mut self, fs: &core::FileStorage) -> Result<()> {
unsafe { sys::cv_face_FaceRecognizer_load_FileStorage(self.as_raw_FaceRecognizer(), fs.as_raw_FileStorage()) }.into_result()
}
fn set_label_info(&mut self, label: i32, str_info: &str) -> Result<()> {
string_arg!(str_info);
unsafe { sys::cv_face_FaceRecognizer_setLabelInfo_int_String(self.as_raw_FaceRecognizer(), label, str_info.as_ptr()) }.into_result()
}
fn get_label_info(&self, label: i32) -> Result<String> {
unsafe { sys::cv_face_FaceRecognizer_getLabelInfo_const_int(self.as_raw_FaceRecognizer(), label) }.into_result().map(crate::templ::receive_string_mut)
}
fn get_labels_by_string(&self, str: &str) -> Result<types::VectorOfint> {
string_arg!(str);
unsafe { sys::cv_face_FaceRecognizer_getLabelsByString_const_String(self.as_raw_FaceRecognizer(), str.as_ptr()) }.into_result().map(|ptr| types::VectorOfint { ptr })
}
fn get_threshold(&self) -> Result<f64> {
unsafe { sys::cv_face_FaceRecognizer_getThreshold_const(self.as_raw_FaceRecognizer()) }.into_result()
}
fn set_threshold(&mut self, val: f64) -> Result<()> {
unsafe { sys::cv_face_FaceRecognizer_setThreshold_double(self.as_raw_FaceRecognizer(), val) }.into_result()
}
}
pub trait LBPHFaceRecognizer: crate::face::FaceRecognizer {
fn as_raw_LBPHFaceRecognizer(&self) -> *mut c_void;
fn get_grid_x(&self) -> Result<i32> {
unsafe { sys::cv_face_LBPHFaceRecognizer_getGridX_const(self.as_raw_LBPHFaceRecognizer()) }.into_result()
}
fn set_grid_x(&mut self, val: i32) -> Result<()> {
unsafe { sys::cv_face_LBPHFaceRecognizer_setGridX_int(self.as_raw_LBPHFaceRecognizer(), val) }.into_result()
}
fn get_grid_y(&self) -> Result<i32> {
unsafe { sys::cv_face_LBPHFaceRecognizer_getGridY_const(self.as_raw_LBPHFaceRecognizer()) }.into_result()
}
fn set_grid_y(&mut self, val: i32) -> Result<()> {
unsafe { sys::cv_face_LBPHFaceRecognizer_setGridY_int(self.as_raw_LBPHFaceRecognizer(), val) }.into_result()
}
fn get_radius(&self) -> Result<i32> {
unsafe { sys::cv_face_LBPHFaceRecognizer_getRadius_const(self.as_raw_LBPHFaceRecognizer()) }.into_result()
}
fn set_radius(&mut self, val: i32) -> Result<()> {
unsafe { sys::cv_face_LBPHFaceRecognizer_setRadius_int(self.as_raw_LBPHFaceRecognizer(), val) }.into_result()
}
fn get_neighbors(&self) -> Result<i32> {
unsafe { sys::cv_face_LBPHFaceRecognizer_getNeighbors_const(self.as_raw_LBPHFaceRecognizer()) }.into_result()
}
fn set_neighbors(&mut self, val: i32) -> Result<()> {
unsafe { sys::cv_face_LBPHFaceRecognizer_setNeighbors_int(self.as_raw_LBPHFaceRecognizer(), val) }.into_result()
}
fn get_threshold(&self) -> Result<f64> {
unsafe { sys::cv_face_LBPHFaceRecognizer_getThreshold_const(self.as_raw_LBPHFaceRecognizer()) }.into_result()
}
fn set_threshold(&mut self, val: f64) -> Result<()> {
unsafe { sys::cv_face_LBPHFaceRecognizer_setThreshold_double(self.as_raw_LBPHFaceRecognizer(), val) }.into_result()
}
fn get_histograms(&self) -> Result<types::VectorOfMat> {
unsafe { sys::cv_face_LBPHFaceRecognizer_getHistograms_const(self.as_raw_LBPHFaceRecognizer()) }.into_result().map(|ptr| types::VectorOfMat { ptr })
}
fn get_labels(&self) -> Result<core::Mat> {
unsafe { sys::cv_face_LBPHFaceRecognizer_getLabels_const(self.as_raw_LBPHFaceRecognizer()) }.into_result().map(|ptr| core::Mat { ptr })
}
}
pub trait PredictCollector {
fn as_raw_PredictCollector(&self) -> *mut c_void;
fn init(&mut self, size: size_t) -> Result<()> {
unsafe { sys::cv_face_PredictCollector_init_size_t(self.as_raw_PredictCollector(), size) }.into_result()
}
fn collect(&mut self, label: i32, dist: f64) -> Result<bool> {
unsafe { sys::cv_face_PredictCollector_collect_int_double(self.as_raw_PredictCollector(), label, dist) }.into_result()
}
}
pub struct StandardCollector {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for StandardCollector {
fn drop(&mut self) {
unsafe { sys::cv_StandardCollector_delete(self.ptr) };
}
}
impl StandardCollector {
#[inline(always)] pub fn as_raw_StandardCollector(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for StandardCollector {}
impl crate::face::PredictCollector for StandardCollector {
#[inline(always)] fn as_raw_PredictCollector(&self) -> *mut c_void { self.ptr }
}
impl StandardCollector {
pub fn new(threshold_: f64) -> Result<crate::face::StandardCollector> {
unsafe { sys::cv_face_StandardCollector_StandardCollector_double(threshold_) }.into_result().map(|ptr| crate::face::StandardCollector { ptr })
}
pub fn init(&mut self, size: size_t) -> Result<()> {
unsafe { sys::cv_face_StandardCollector_init_size_t(self.as_raw_StandardCollector(), size) }.into_result()
}
pub fn collect(&mut self, label: i32, dist: f64) -> Result<bool> {
unsafe { sys::cv_face_StandardCollector_collect_int_double(self.as_raw_StandardCollector(), label, dist) }.into_result()
}
pub fn get_min_label(&self) -> Result<i32> {
unsafe { sys::cv_face_StandardCollector_getMinLabel_const(self.as_raw_StandardCollector()) }.into_result()
}
pub fn get_min_dist(&self) -> Result<f64> {
unsafe { sys::cv_face_StandardCollector_getMinDist_const(self.as_raw_StandardCollector()) }.into_result()
}
pub fn create(threshold: f64) -> Result<types::PtrOfStandardCollector> {
unsafe { sys::cv_face_StandardCollector_create_double(threshold) }.into_result().map(|ptr| types::PtrOfStandardCollector { ptr })
}
}
pub struct StandardCollector_PredictResult {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for StandardCollector_PredictResult {
fn drop(&mut self) {
unsafe { sys::cv_StandardCollector_PredictResult_delete(self.ptr) };
}
}
impl StandardCollector_PredictResult {
#[inline(always)] pub fn as_raw_StandardCollector_PredictResult(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for StandardCollector_PredictResult {}
impl StandardCollector_PredictResult {
pub fn new(label_: i32, distance_: f64) -> Result<crate::face::StandardCollector_PredictResult> {
unsafe { sys::cv_face_StandardCollector_PredictResult_PredictResult_int_double(label_, distance_) }.into_result().map(|ptr| crate::face::StandardCollector_PredictResult { ptr })
}
}