简单使用 cvCalcPCA 计算主成分的代码
CvMat * pData = cvCreateMat( 100 , 2 , CV_32FC1); // 二维数据点 for ( int i = 0 ; i < 100 ; i ++ ) ... { cvSet2D(pData, i, 0,cvRealScalar(i)); cvSet2D(pData, i, 1,cvRealScalar(i)); } CvMat * pMean = cvCreateMat( 1 , 2 , CV_32FC1); CvMat * pEigVals = cvCreateMat( 1 , 2 , CV_32FC1); CvMat * pEigVecs = cvCreateMat( 2 , 2 , CV_32FC1); cvCalcPCA(pData, pMean, pEigVals, pEigVecs, CV_PCA_DATA_AS_ROW ); float pp[ 100 ]; memcpy(pp,pEigVals -> data.fl, 100 ); memcpy(pp,pEigVecs -> data.fl, 100 ); memcpy(pp,pMean -> data.fl, 100 );