opencv::face

Struct MACE

Source
pub struct MACE { /* private fields */ }
Expand description

Minimum Average Correlation Energy Filter useful for authentication with (cancellable) biometrical features. (does not need many positives to train (10-50), and no negatives at all, also robust to noise/salting)

see also: Savvides04

this implementation is largely based on: https://code.google.com/archive/p/pam-face-authentication (GSOC 2009)

use it like:


Ptr<face::MACE> mace = face::MACE::create(64);

vector<Mat> pos_images = ...
mace->train(pos_images);

Mat query = ...
bool same = mace->same(query);

you can also use two-factor authentication, with an additional passphrase:

String owners_passphrase = "ilikehotdogs";
Ptr<face::MACE> mace = face::MACE::create(64);
mace->salt(owners_passphrase);
vector<Mat> pos_images = ...
mace->train(pos_images);

// now, users have to give a valid passphrase, along with the image:
Mat query = ...
cout << "enter passphrase: ";
string pass;
getline(cin, pass);
mace->salt(pass);
bool same = mace->same(query);

save/load your model:

Ptr<face::MACE> mace = face::MACE::create(64);
mace->train(pos_images);
mace->save("my_mace.xml");

// later:
Ptr<MACE> reloaded = MACE::load("my_mace.xml");
reloaded->same(some_image);

Implementations§

Source§

impl MACE

Source

pub fn load(filename: &str, objname: &str) -> Result<Ptr<MACE>>

constructor

§Parameters
  • filename: build a new MACE instance from a pre-serialized FileStorage
  • objname: (optional) top-level node in the FileStorage
§C++ default parameters
  • objname: String()
Source

pub fn load_def(filename: &str) -> Result<Ptr<MACE>>

constructor

§Parameters
  • filename: build a new MACE instance from a pre-serialized FileStorage
  • objname: (optional) top-level node in the FileStorage
§Note

This alternative version of MACE::load function uses the following default values for its arguments:

  • objname: String()
Source

pub fn create(imgsize: i32) -> Result<Ptr<MACE>>

constructor

§Parameters
  • IMGSIZE: images will get resized to this (should be an even number)
§C++ default parameters
  • imgsize: 64
Source

pub fn create_def() -> Result<Ptr<MACE>>

constructor

§Parameters
  • IMGSIZE: images will get resized to this (should be an even number)
§Note

This alternative version of MACE::create function uses the following default values for its arguments:

  • imgsize: 64

Trait Implementations§

Source§

impl AlgorithmTrait for MACE

Source§

fn as_raw_mut_Algorithm(&mut self) -> *mut c_void

Source§

fn clear(&mut self) -> Result<()>

Clears the algorithm state
Source§

fn read(&mut self, fn_: &impl FileNodeTraitConst) -> Result<()>

Reads algorithm parameters from a file storage
Source§

impl AlgorithmTraitConst for MACE

Source§

fn as_raw_Algorithm(&self) -> *const c_void

Source§

fn write(&self, fs: &mut impl FileStorageTrait) -> Result<()>

Stores algorithm parameters in a file storage
Source§

fn write_1(&self, fs: &mut impl FileStorageTrait, name: &str) -> Result<()>

Stores algorithm parameters in a file storage Read more
Source§

fn write_with_name(&self, fs: &Ptr<FileStorage>, name: &str) -> Result<()>

@deprecated Read more
Source§

fn write_with_name_def(&self, fs: &Ptr<FileStorage>) -> Result<()>

👎Deprecated:

§Note

Deprecated: ## Note This alternative version of AlgorithmTraitConst::write_with_name function uses the following default values for its arguments: Read more
Source§

fn empty(&self) -> Result<bool>

Returns true if the Algorithm is empty (e.g. in the very beginning or after unsuccessful read
Source§

fn save(&self, filename: &str) -> Result<()>

Saves the algorithm to a file. In order to make this method work, the derived class must implement Algorithm::write(FileStorage& fs).
Source§

fn get_default_name(&self) -> Result<String>

Returns the algorithm string identifier. This string is used as top level xml/yml node tag when the object is saved to a file or string.
Source§

impl Boxed for MACE

Source§

unsafe fn from_raw(ptr: <MACE as OpenCVFromExtern>::ExternReceive) -> Self

Wrap the specified raw pointer Read more
Source§

fn into_raw(self) -> <MACE as OpenCVTypeExternContainer>::ExternSendMut

Return the underlying raw pointer while consuming this wrapper. Read more
Source§

fn as_raw(&self) -> <MACE as OpenCVTypeExternContainer>::ExternSend

Return the underlying raw pointer. Read more
Source§

fn as_raw_mut(&mut self) -> <MACE as OpenCVTypeExternContainer>::ExternSendMut

Return the underlying mutable raw pointer Read more
Source§

impl Debug for MACE

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Drop for MACE

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl From<MACE> for Algorithm

Source§

fn from(s: MACE) -> Self

Converts to this type from the input type.
Source§

impl MACETrait for MACE

Source§

fn as_raw_mut_MACE(&mut self) -> *mut c_void

Source§

fn salt(&mut self, passphrase: &str) -> Result<()>

optionally encrypt images with random convolution Read more
Source§

fn train(&mut self, images: &impl ToInputArray) -> Result<()>

train it on positive features compute the mace filter: h = D(-1) * X * (X(+) * D(-1) * X)(-1) * C also calculate a minimal threshold for this class, the smallest self-similarity from the train images Read more
Source§

impl MACETraitConst for MACE

Source§

fn as_raw_MACE(&self) -> *const c_void

Source§

fn same(&self, query: &impl ToInputArray) -> Result<bool>

correlate query img and threshold to min class value Read more
Source§

impl Send for MACE

Auto Trait Implementations§

§

impl Freeze for MACE

§

impl RefUnwindSafe for MACE

§

impl !Sync for MACE

§

impl Unpin for MACE

§

impl UnwindSafe for MACE

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<Mat> ModifyInplace for Mat
where Mat: Boxed,

Source§

unsafe fn modify_inplace<Res>( &mut self, f: impl FnOnce(&Mat, &mut Mat) -> Res, ) -> Res

Helper function to call OpenCV functions that allow in-place modification of a Mat or another similar object. By passing a mutable reference to the Mat to this function your closure will get called with the read reference and a write references to the same Mat. This is unsafe in a general case as it leads to having non-exclusive mutable access to the internal data, but it can be useful for some performance sensitive operations. One example of an OpenCV function that allows such in-place modification is imgproc::threshold. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.