#include <cv.h>
#include <highgui.h>
#include <stdio.h>
#include <stdlib.h>
#pragma comment(lib,"cv200.lib")
#pragma comment(lib,"highgui200.lib")
#pragma comment(lib,"cxcore200.lib")
double Coordinate[21]=
{
1.5,2.3,
3.0,1.7,
1.2,2.9,
2.1,2.9,
3.1,2.6,
5.2,2.4,
6.1,8.0,
8.6,9.2,
1.0,2.0,
5.0,2.3,2.2
};
void PrintMatrix(CvMat *Matrix,int Rows,int Cols)
{
for(int i=0; i<Rows; ++i)
{
for(int j=0; j<Cols; ++j)
{
printf("%3lf",cvGet2D(Matrix,i,j).val[0]);
}
printf("\n");
}
}
int main(int argc, char **argv)
{
CvMat *Vector1;
CvMat *AvgVector;
CvMat *EigenValue_Row;
CvMat *EigenVector;
Vector1 = cvCreateMat(7,3,CV_32FC1);
cvSetData(Vector1,Coordinate,Vector1->step);
AvgVector=cvCreateMat(1,3,CV_32FC1);
EigenValue_Row=cvCreateMat(3,1,CV_32FC1);
EigenVector=cvCreateMat(3,3,CV_32FC1);
cvCalcPCA(Vector1,AvgVector,EigenValue_Row,EigenVector,CV_PCA_DATA_AS_ROW);
cvProjectPCA(Vector1,AvgVector,EigenVector,Vector1);
printf("Project Original Data:\n");
PrintMatrix(Vector1,7,3);
system("pause");
return 0;
}
输出:
Project Original Data:
1.#QNAN01.#QNAN0-1.#IND00
1.#QNAN01.#QNAN0-1.#IND00
1.#QNAN01.#QNAN0-1.#IND00
1.#QNAN01.#QNAN0-1.#IND00
1.#QNAN01.#QNAN0-1.#IND00
1.#QNAN01.#QNAN0-1.#IND00
1.#QNAN01.#QNAN0-1.#IND00
请按任意键继续. . .