随着OpenCV的发展,封装了越来越多的功能,而往往这些功能不是一个函数就能完成的,实现为一组函数又会导致整个库的函数变得杂乱无章,因此常常使用一个新的对象类型来实现这个新功能。通过重载operator()来生成对象或函数子。下面主要讲述了三个新类型cv::PCA、cv::SVD和cv::RNG。
cv::PCA
主成分分析是一种降维的方法,主要是通过分析多维分布从中提取出带有最多信息量的维度子集的方法,这样,在不损失太多精度的前提下,可以扔掉较少信息的维度。
cv::PCA::PCA()
cv::PCA::PCA()
作用:默认的构造函数,简单的创建PCA对象并初始化空结构
cv::PCA::PCA(InputArray data, InputArray mean, int flags, int maxComponents=0)
作用:执行默认构造,然后立即将它的参数传递给cv::PCA::operator()
cv::PCA::operator()
cv::PCA& cv::PCA::operator()(InputArray data, InputArray mean, int flags, int maxComponents=0)
作用:生成PCA对象内部分布的模型。
参数:
参数 | 含义 | |
---|---|---|
data | 一个包含所有构成样本分布的矩阵,n采样,D维 | |
mean | 包含每一维的平均值的矩阵 | |
flags | 指定data和mean的排布方式: | cv::PCA_DATA_AS_ROW:data是n×D,mean是n×1 |
cv::PCA_DATA_AS_COL:data是D×n,mean是1×n | ||
maxComponents |