简单使用 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 );
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 );