OpenCV的仿函数 ( Functors,函数子 )

Posted on 2020-05-27 16:32  金色的省略号  阅读(194)  评论(0编辑  收藏  举报


  Functors,仿函数,
其实就是重载了括号运算符 () 的  对象 ( Objects That "Do Stuff" ),可以具有函数的一些性质,可以拥有状态,可以在运行时动态地改变行为,可以在需要函数的地方 ( 主要是各种容器和算法 ) 使用;参数传值,仿函数的状态不会因算法而改变;参数传引用,仿函数的状态因算法而改变 ( 有关仿函数在本博客C++分类中讨论 )

  cv::PCA::PCA()

PCA::PCA();

PCA::PCA(
    cv::InputArray data, // Data, as rows or cols in 2d array
    cv::InputArray mean, // average, if known, 1-by-n or n-by-1
    int flags, // Are vectors rows or cols of 'data'
    int maxComponents = 0 // Max dimensions to retain
);

  创建对象后,对象重载运算符(),参数立即传递给PCA::operator(),进行某种操作

  cv::PCA::operator()(...)

PCA::operator()(
    cv::InputArray data, // Data, as rows or cols in 2d array
    cv::InputArray mean, // average, if known, 1-by-n or n-by-1
    int flags, // Are vectors rows or cols of 'data'
    int maxComponents = 0 // Max dimensions to retain
);

  任何对cv::PCA::operator()的后续调用 都将重写特征向量和特征值的内部表示,因此需要时你 可以重用一个PCA对象,即可以直接重复使用当前对象而不用重新申请新的对象