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对象,即可以直接重复使用当前对象而不用重新申请新的对象