use crate::{mod_prelude::*, core, sys, types};
use crate::core::{_InputArrayTrait, _OutputArrayTrait};
pub type FN_FaceDetector = dyn FnMut(core::_InputArray, core::_OutputArray, &mut c_void) + Send + Sync + 'static;
#[doc(hidden)] pub type FN_FaceDetectorExtern = Option<extern "C" fn(unnamed_arg: *mut c_void, unnamed_arg_1: *mut c_void, user_data: *mut c_void)>;
pub fn create_facemark_aam() -> Result<types::PtrOfFacemark> {
unsafe { sys::cv_face_createFacemarkAAM() }.into_result().map(|ptr| types::PtrOfFacemark { ptr })
}
pub fn create_facemark_kazemi() -> Result<types::PtrOfFacemark> {
unsafe { sys::cv_face_createFacemarkKazemi() }.into_result().map(|ptr| types::PtrOfFacemark { ptr })
}
pub fn create_facemark_lbf() -> Result<types::PtrOfFacemark> {
unsafe { sys::cv_face_createFacemarkLBF() }.into_result().map(|ptr| types::PtrOfFacemark { ptr })
}
pub fn draw_facemarks(image: &mut dyn core::ToInputOutputArray, points: &dyn core::ToInputArray, color: core::Scalar) -> Result<()> {
input_output_array_arg!(image);
input_array_arg!(points);
unsafe { sys::cv_face_drawFacemarks__InputOutputArray__InputArray_Scalar(image.as_raw__InputOutputArray(), points.as_raw__InputArray(), color) }.into_result()
}
pub fn get_faces_haar(image: &dyn core::ToInputArray, faces: &mut dyn core::ToOutputArray, face_cascade_name: &str) -> Result<bool> {
input_array_arg!(image);
output_array_arg!(faces);
string_arg!(face_cascade_name);
unsafe { sys::cv_face_getFacesHAAR__InputArray__OutputArray_String(image.as_raw__InputArray(), faces.as_raw__OutputArray(), face_cascade_name.as_ptr()) }.into_result()
}
pub fn get_faces(image: &dyn core::ToInputArray, faces: &mut dyn core::ToOutputArray, params: &mut crate::face::CParams) -> Result<bool> {
input_array_arg!(image);
output_array_arg!(faces);
unsafe { sys::cv_face_getFaces__InputArray__OutputArray_CParams(image.as_raw__InputArray(), faces.as_raw__OutputArray(), params.as_raw_CParams()) }.into_result()
}
pub fn load_dataset_list(image_list: &str, annotation_list: &str, images: &mut types::VectorOfString, annotations: &mut types::VectorOfString) -> Result<bool> {
string_arg!(mut image_list);
string_arg!(mut annotation_list);
unsafe { sys::cv_face_loadDatasetList_String_String_VectorOfString_VectorOfString(image_list.as_ptr() as _, annotation_list.as_ptr() as _, images.as_raw_VectorOfString(), annotations.as_raw_VectorOfString()) }.into_result()
}
pub fn load_face_points(filename: &str, points: &mut dyn core::ToOutputArray, offset: f32) -> Result<bool> {
string_arg!(mut filename);
output_array_arg!(points);
unsafe { sys::cv_face_loadFacePoints_String__OutputArray_float(filename.as_ptr() as _, points.as_raw__OutputArray(), offset) }.into_result()
}
pub fn load_training_data(image_list: &str, ground_truth: &str, images: &mut types::VectorOfString, face_points: &mut dyn core::ToOutputArray, offset: f32) -> Result<bool> {
string_arg!(mut image_list);
string_arg!(mut ground_truth);
output_array_arg!(face_points);
unsafe { sys::cv_face_loadTrainingData_String_String_VectorOfString__OutputArray_float(image_list.as_ptr() as _, ground_truth.as_ptr() as _, images.as_raw_VectorOfString(), face_points.as_raw__OutputArray(), offset) }.into_result()
}
pub fn load_training_data_1(filename: &str, images: &mut types::VectorOfString, face_points: &mut dyn core::ToOutputArray, delim: i8, offset: f32) -> Result<bool> {
string_arg!(mut filename);
output_array_arg!(face_points);
unsafe { sys::cv_face_loadTrainingData_String_VectorOfString__OutputArray_char_float(filename.as_ptr() as _, images.as_raw_VectorOfString(), face_points.as_raw__OutputArray(), delim, offset) }.into_result()
}
pub fn load_training_data_2(filename: &types::VectorOfString, trainlandmarks: &mut types::VectorOfVectorOfPoint2f, trainimages: &mut types::VectorOfString) -> Result<bool> {
unsafe { sys::cv_face_loadTrainingData_VectorOfString_VectorOfVectorOfPoint2f_VectorOfString(filename.as_raw_VectorOfString(), trainlandmarks.as_raw_VectorOfVectorOfPoint2f(), trainimages.as_raw_VectorOfString()) }.into_result()
}
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()
}
}
impl dyn BIF + '_ {
pub fn create(num_bands: i32, num_rotations: i32) -> Result<types::PtrOfBIF> {
unsafe { sys::cv_face_BIF_create_int_int(num_bands, num_rotations) }.into_result().map(|ptr| types::PtrOfBIF { ptr })
}
}
pub trait BasicFaceRecognizerTrait: 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 })
}
fn read(&mut self, _fn: &core::FileNode) -> Result<()> {
unsafe { sys::cv_face_BasicFaceRecognizer_read_FileNode(self.as_raw_BasicFaceRecognizer(), _fn.as_raw_FileNode()) }.into_result()
}
fn write(&self, fs: &mut core::FileStorage) -> Result<()> {
unsafe { sys::cv_face_BasicFaceRecognizer_write_const_FileStorage(self.as_raw_BasicFaceRecognizer(), fs.as_raw_FileStorage()) }.into_result()
}
fn empty(&self) -> Result<bool> {
unsafe { sys::cv_face_BasicFaceRecognizer_empty_const(self.as_raw_BasicFaceRecognizer()) }.into_result()
}
}
pub struct BasicFaceRecognizer {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for BasicFaceRecognizer {
fn drop(&mut self) {
unsafe { sys::cv_BasicFaceRecognizer_delete(self.ptr) };
}
}
impl BasicFaceRecognizer {
#[inline(always)] pub fn as_raw_BasicFaceRecognizer(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for BasicFaceRecognizer {}
impl core::AlgorithmTrait for BasicFaceRecognizer {
#[inline(always)] fn as_raw_Algorithm(&self) -> *mut c_void { self.ptr }
}
impl crate::face::BasicFaceRecognizerTrait for BasicFaceRecognizer {
#[inline(always)] fn as_raw_BasicFaceRecognizer(&self) -> *mut c_void { self.ptr }
}
impl crate::face::FaceRecognizer for BasicFaceRecognizer {
#[inline(always)] fn as_raw_FaceRecognizer(&self) -> *mut c_void { self.ptr }
}
pub struct CParams {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for CParams {
fn drop(&mut self) {
unsafe { sys::cv_CParams_delete(self.ptr) };
}
}
impl CParams {
#[inline(always)] pub fn as_raw_CParams(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for CParams {}
impl CParams {
pub fn new(cascade_model: &str, sf: f64, min_n: i32, min_sz: core::Size, max_sz: core::Size) -> Result<crate::face::CParams> {
string_arg!(mut cascade_model);
unsafe { sys::cv_face_CParams_CParams_String_double_int_Size_Size(cascade_model.as_ptr() as _, sf, min_n, min_sz, max_sz) }.into_result().map(|ptr| crate::face::CParams { ptr })
}
}
pub struct EigenFaceRecognizer {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for EigenFaceRecognizer {
fn drop(&mut self) {
unsafe { sys::cv_EigenFaceRecognizer_delete(self.ptr) };
}
}
impl EigenFaceRecognizer {
#[inline(always)] pub fn as_raw_EigenFaceRecognizer(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for EigenFaceRecognizer {}
impl core::AlgorithmTrait for EigenFaceRecognizer {
#[inline(always)] fn as_raw_Algorithm(&self) -> *mut c_void { self.ptr }
}
impl crate::face::BasicFaceRecognizerTrait for EigenFaceRecognizer {
#[inline(always)] fn as_raw_BasicFaceRecognizer(&self) -> *mut c_void { self.ptr }
}
impl crate::face::FaceRecognizer for EigenFaceRecognizer {
#[inline(always)] fn as_raw_FaceRecognizer(&self) -> *mut c_void { self.ptr }
}
impl EigenFaceRecognizer {
pub fn create(num_components: i32, threshold: f64) -> Result<types::PtrOfEigenFaceRecognizer> {
unsafe { sys::cv_face_EigenFaceRecognizer_create_int_double(num_components, threshold) }.into_result().map(|ptr| types::PtrOfEigenFaceRecognizer { 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 write(&self, filename: &str) -> Result<()> {
string_arg!(filename);
unsafe { sys::cv_face_FaceRecognizer_write_const_String(self.as_raw_FaceRecognizer(), filename.as_ptr()) }.into_result()
}
fn read(&mut self, filename: &str) -> Result<()> {
string_arg!(filename);
unsafe { sys::cv_face_FaceRecognizer_read_String(self.as_raw_FaceRecognizer(), filename.as_ptr()) }.into_result()
}
fn write_1(&self, fs: &mut core::FileStorage) -> Result<()> {
unsafe { sys::cv_face_FaceRecognizer_write_const_FileStorage(self.as_raw_FaceRecognizer(), fs.as_raw_FileStorage()) }.into_result()
}
fn read_1(&mut self, _fn: &core::FileNode) -> Result<()> {
unsafe { sys::cv_face_FaceRecognizer_read_FileNode(self.as_raw_FaceRecognizer(), _fn.as_raw_FileNode()) }.into_result()
}
fn empty(&self) -> Result<bool> {
unsafe { sys::cv_face_FaceRecognizer_empty_const(self.as_raw_FaceRecognizer()) }.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 Facemark: core::AlgorithmTrait {
fn as_raw_Facemark(&self) -> *mut c_void;
fn load_model(&mut self, model: &str) -> Result<()> {
string_arg!(mut model);
unsafe { sys::cv_face_Facemark_loadModel_String(self.as_raw_Facemark(), model.as_ptr() as _) }.into_result()
}
fn fit(&mut self, image: &dyn core::ToInputArray, faces: &dyn core::ToInputArray, landmarks: &mut dyn core::ToOutputArray) -> Result<bool> {
input_array_arg!(image);
input_array_arg!(faces);
output_array_arg!(landmarks);
unsafe { sys::cv_face_Facemark_fit__InputArray__InputArray__OutputArray(self.as_raw_Facemark(), image.as_raw__InputArray(), faces.as_raw__InputArray(), landmarks.as_raw__OutputArray()) }.into_result()
}
}
pub trait FacemarkAAM: crate::face::FacemarkTrain {
fn as_raw_FacemarkAAM(&self) -> *mut c_void;
fn fit_config(&mut self, image: &dyn core::ToInputArray, roi: &dyn core::ToInputArray, _landmarks: &mut dyn core::ToOutputArray, runtime_params: &types::VectorOfConfig) -> Result<bool> {
input_array_arg!(image);
input_array_arg!(roi);
output_array_arg!(_landmarks);
unsafe { sys::cv_face_FacemarkAAM_fitConfig__InputArray__InputArray__OutputArray_VectorOfConfig(self.as_raw_FacemarkAAM(), image.as_raw__InputArray(), roi.as_raw__InputArray(), _landmarks.as_raw__OutputArray(), runtime_params.as_raw_VectorOfConfig()) }.into_result()
}
}
impl dyn FacemarkAAM + '_ {
pub fn create(parameters: &crate::face::FacemarkAAM_Params) -> Result<types::PtrOfFacemarkAAM> {
unsafe { sys::cv_face_FacemarkAAM_create_Params(parameters.as_raw_FacemarkAAM_Params()) }.into_result().map(|ptr| types::PtrOfFacemarkAAM { ptr })
}
}
pub struct FacemarkAAM_Config {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for FacemarkAAM_Config {
fn drop(&mut self) {
unsafe { sys::cv_FacemarkAAM_Config_delete(self.ptr) };
}
}
impl FacemarkAAM_Config {
#[inline(always)] pub fn as_raw_FacemarkAAM_Config(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for FacemarkAAM_Config {}
impl FacemarkAAM_Config {
pub fn new(rot: &core::Mat, trans: core::Point2f, scaling: f32, scale_id: i32) -> Result<crate::face::FacemarkAAM_Config> {
unsafe { sys::cv_face_FacemarkAAM_Config_Config_Mat_Point2f_float_int(rot.as_raw_Mat(), trans, scaling, scale_id) }.into_result().map(|ptr| crate::face::FacemarkAAM_Config { ptr })
}
}
pub struct FacemarkAAM_Data {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for FacemarkAAM_Data {
fn drop(&mut self) {
unsafe { sys::cv_FacemarkAAM_Data_delete(self.ptr) };
}
}
impl FacemarkAAM_Data {
#[inline(always)] pub fn as_raw_FacemarkAAM_Data(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for FacemarkAAM_Data {}
pub struct FacemarkAAM_Model {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for FacemarkAAM_Model {
fn drop(&mut self) {
unsafe { sys::cv_FacemarkAAM_Model_delete(self.ptr) };
}
}
impl FacemarkAAM_Model {
#[inline(always)] pub fn as_raw_FacemarkAAM_Model(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for FacemarkAAM_Model {}
pub struct FacemarkAAM_Model_Texture {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for FacemarkAAM_Model_Texture {
fn drop(&mut self) {
unsafe { sys::cv_FacemarkAAM_Model_Texture_delete(self.ptr) };
}
}
impl FacemarkAAM_Model_Texture {
#[inline(always)] pub fn as_raw_FacemarkAAM_Model_Texture(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for FacemarkAAM_Model_Texture {}
pub struct FacemarkAAM_Params {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for FacemarkAAM_Params {
fn drop(&mut self) {
unsafe { sys::cv_FacemarkAAM_Params_delete(self.ptr) };
}
}
impl FacemarkAAM_Params {
#[inline(always)] pub fn as_raw_FacemarkAAM_Params(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for FacemarkAAM_Params {}
impl FacemarkAAM_Params {
pub fn default() -> Result<crate::face::FacemarkAAM_Params> {
unsafe { sys::cv_face_FacemarkAAM_Params_Params() }.into_result().map(|ptr| crate::face::FacemarkAAM_Params { ptr })
}
pub fn read(&mut self, unnamed_arg: &core::FileNode) -> Result<()> {
unsafe { sys::cv_face_FacemarkAAM_Params_read_FileNode(self.as_raw_FacemarkAAM_Params(), unnamed_arg.as_raw_FileNode()) }.into_result()
}
pub fn write(&self, unnamed_arg: &mut core::FileStorage) -> Result<()> {
unsafe { sys::cv_face_FacemarkAAM_Params_write_const_FileStorage(self.as_raw_FacemarkAAM_Params(), unnamed_arg.as_raw_FileStorage()) }.into_result()
}
}
pub trait FacemarkKazemi: crate::face::Facemark {
fn as_raw_FacemarkKazemi(&self) -> *mut c_void;
fn training(&mut self, images: &mut types::VectorOfMat, landmarks: &mut types::VectorOfVectorOfPoint2f, configfile: &str, scale: core::Size, model_filename: &str) -> Result<bool> {
string_arg!(mut configfile);
string_arg!(mut model_filename);
unsafe { sys::cv_face_FacemarkKazemi_training_VectorOfMat_VectorOfVectorOfPoint2f_std_string_Size_std_string(self.as_raw_FacemarkKazemi(), images.as_raw_VectorOfMat(), landmarks.as_raw_VectorOfVectorOfPoint2f(), configfile.as_ptr() as _, scale, model_filename.as_ptr() as _) }.into_result()
}
fn get_faces(&mut self, image: &dyn core::ToInputArray, faces: &mut dyn core::ToOutputArray) -> Result<bool> {
input_array_arg!(image);
output_array_arg!(faces);
unsafe { sys::cv_face_FacemarkKazemi_getFaces__InputArray__OutputArray(self.as_raw_FacemarkKazemi(), image.as_raw__InputArray(), faces.as_raw__OutputArray()) }.into_result()
}
}
impl dyn FacemarkKazemi + '_ {
pub fn create(parameters: &crate::face::FacemarkKazemi_Params) -> Result<types::PtrOfFacemarkKazemi> {
unsafe { sys::cv_face_FacemarkKazemi_create_Params(parameters.as_raw_FacemarkKazemi_Params()) }.into_result().map(|ptr| types::PtrOfFacemarkKazemi { ptr })
}
}
pub struct FacemarkKazemi_Params {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for FacemarkKazemi_Params {
fn drop(&mut self) {
unsafe { sys::cv_FacemarkKazemi_Params_delete(self.ptr) };
}
}
impl FacemarkKazemi_Params {
#[inline(always)] pub fn as_raw_FacemarkKazemi_Params(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for FacemarkKazemi_Params {}
impl FacemarkKazemi_Params {
pub fn default() -> Result<crate::face::FacemarkKazemi_Params> {
unsafe { sys::cv_face_FacemarkKazemi_Params_Params() }.into_result().map(|ptr| crate::face::FacemarkKazemi_Params { ptr })
}
}
pub struct FacemarkLBF {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for FacemarkLBF {
fn drop(&mut self) {
unsafe { sys::cv_FacemarkLBF_delete(self.ptr) };
}
}
impl FacemarkLBF {
#[inline(always)] pub fn as_raw_FacemarkLBF(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for FacemarkLBF {}
impl core::AlgorithmTrait for FacemarkLBF {
#[inline(always)] fn as_raw_Algorithm(&self) -> *mut c_void { self.ptr }
}
impl crate::face::Facemark for FacemarkLBF {
#[inline(always)] fn as_raw_Facemark(&self) -> *mut c_void { self.ptr }
}
impl crate::face::FacemarkTrain for FacemarkLBF {
#[inline(always)] fn as_raw_FacemarkTrain(&self) -> *mut c_void { self.ptr }
}
impl FacemarkLBF {
pub fn create(parameters: &crate::face::FacemarkLBF_Params) -> Result<types::PtrOfFacemarkLBF> {
unsafe { sys::cv_face_FacemarkLBF_create_Params(parameters.as_raw_FacemarkLBF_Params()) }.into_result().map(|ptr| types::PtrOfFacemarkLBF { ptr })
}
}
pub struct FacemarkLBF_BBox {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for FacemarkLBF_BBox {
fn drop(&mut self) {
unsafe { sys::cv_FacemarkLBF_BBox_delete(self.ptr) };
}
}
impl FacemarkLBF_BBox {
#[inline(always)] pub fn as_raw_FacemarkLBF_BBox(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for FacemarkLBF_BBox {}
impl FacemarkLBF_BBox {
pub fn default() -> Result<crate::face::FacemarkLBF_BBox> {
unsafe { sys::cv_face_FacemarkLBF_BBox_BBox() }.into_result().map(|ptr| crate::face::FacemarkLBF_BBox { ptr })
}
pub fn new(x: f64, y: f64, w: f64, h: f64) -> Result<crate::face::FacemarkLBF_BBox> {
unsafe { sys::cv_face_FacemarkLBF_BBox_BBox_double_double_double_double(x, y, w, h) }.into_result().map(|ptr| crate::face::FacemarkLBF_BBox { ptr })
}
pub fn project(&self, shape: &core::Mat) -> Result<core::Mat> {
unsafe { sys::cv_face_FacemarkLBF_BBox_project_const_Mat(self.as_raw_FacemarkLBF_BBox(), shape.as_raw_Mat()) }.into_result().map(|ptr| core::Mat { ptr })
}
pub fn reproject(&self, shape: &core::Mat) -> Result<core::Mat> {
unsafe { sys::cv_face_FacemarkLBF_BBox_reproject_const_Mat(self.as_raw_FacemarkLBF_BBox(), shape.as_raw_Mat()) }.into_result().map(|ptr| core::Mat { ptr })
}
}
pub struct FacemarkLBF_Params {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for FacemarkLBF_Params {
fn drop(&mut self) {
unsafe { sys::cv_FacemarkLBF_Params_delete(self.ptr) };
}
}
impl FacemarkLBF_Params {
#[inline(always)] pub fn as_raw_FacemarkLBF_Params(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for FacemarkLBF_Params {}
impl FacemarkLBF_Params {
pub fn default() -> Result<crate::face::FacemarkLBF_Params> {
unsafe { sys::cv_face_FacemarkLBF_Params_Params() }.into_result().map(|ptr| crate::face::FacemarkLBF_Params { ptr })
}
pub fn read(&mut self, unnamed_arg: &core::FileNode) -> Result<()> {
unsafe { sys::cv_face_FacemarkLBF_Params_read_FileNode(self.as_raw_FacemarkLBF_Params(), unnamed_arg.as_raw_FileNode()) }.into_result()
}
pub fn write(&self, unnamed_arg: &mut core::FileStorage) -> Result<()> {
unsafe { sys::cv_face_FacemarkLBF_Params_write_const_FileStorage(self.as_raw_FacemarkLBF_Params(), unnamed_arg.as_raw_FileStorage()) }.into_result()
}
}
pub trait FacemarkTrain: crate::face::Facemark {
fn as_raw_FacemarkTrain(&self) -> *mut c_void;
fn add_training_sample(&mut self, image: &dyn core::ToInputArray, landmarks: &dyn core::ToInputArray) -> Result<bool> {
input_array_arg!(image);
input_array_arg!(landmarks);
unsafe { sys::cv_face_FacemarkTrain_addTrainingSample__InputArray__InputArray(self.as_raw_FacemarkTrain(), image.as_raw__InputArray(), landmarks.as_raw__InputArray()) }.into_result()
}
fn training(&mut self, parameters: &mut c_void) -> Result<()> {
unsafe { sys::cv_face_FacemarkTrain_training_void_X(self.as_raw_FacemarkTrain(), parameters) }.into_result()
}
fn get_faces(&mut self, image: &dyn core::ToInputArray, faces: &mut dyn core::ToOutputArray) -> Result<bool> {
input_array_arg!(image);
output_array_arg!(faces);
unsafe { sys::cv_face_FacemarkTrain_getFaces__InputArray__OutputArray(self.as_raw_FacemarkTrain(), image.as_raw__InputArray(), faces.as_raw__OutputArray()) }.into_result()
}
fn get_data(&mut self, items: &mut c_void) -> Result<bool> {
unsafe { sys::cv_face_FacemarkTrain_getData_void_X(self.as_raw_FacemarkTrain(), items) }.into_result()
}
}
pub struct FisherFaceRecognizer {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for FisherFaceRecognizer {
fn drop(&mut self) {
unsafe { sys::cv_FisherFaceRecognizer_delete(self.ptr) };
}
}
impl FisherFaceRecognizer {
#[inline(always)] pub fn as_raw_FisherFaceRecognizer(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for FisherFaceRecognizer {}
impl core::AlgorithmTrait for FisherFaceRecognizer {
#[inline(always)] fn as_raw_Algorithm(&self) -> *mut c_void { self.ptr }
}
impl crate::face::BasicFaceRecognizerTrait for FisherFaceRecognizer {
#[inline(always)] fn as_raw_BasicFaceRecognizer(&self) -> *mut c_void { self.ptr }
}
impl crate::face::FaceRecognizer for FisherFaceRecognizer {
#[inline(always)] fn as_raw_FaceRecognizer(&self) -> *mut c_void { self.ptr }
}
impl FisherFaceRecognizer {
pub fn create(num_components: i32, threshold: f64) -> Result<types::PtrOfFisherFaceRecognizer> {
unsafe { sys::cv_face_FisherFaceRecognizer_create_int_double(num_components, threshold) }.into_result().map(|ptr| types::PtrOfFisherFaceRecognizer { ptr })
}
}
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 })
}
}
impl dyn LBPHFaceRecognizer + '_ {
pub fn create(radius: i32, neighbors: i32, grid_x: i32, grid_y: i32, threshold: f64) -> Result<types::PtrOfLBPHFaceRecognizer> {
unsafe { sys::cv_face_LBPHFaceRecognizer_create_int_int_int_int_double(radius, neighbors, grid_x, grid_y, threshold) }.into_result().map(|ptr| types::PtrOfLBPHFaceRecognizer { ptr })
}
}
pub trait MACE: core::AlgorithmTrait {
fn as_raw_MACE(&self) -> *mut c_void;
fn salt(&mut self, passphrase: &str) -> Result<()> {
string_arg!(passphrase);
unsafe { sys::cv_face_MACE_salt_String(self.as_raw_MACE(), passphrase.as_ptr()) }.into_result()
}
}
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 })
}
}