#include "stdafx.h"
#include "highgui.h"
#include "cv.h"
using namespace cv;
int _tmain(int argc, _TCHAR* argv[])
{
//测试协方差矩阵
double dataSrc[5][4] = { 1, 2, 3 , 4 ,
2, 1, 3 , 3 ,
5, 1, 1 , 3 ,
2, 2, 3 , 1 ,
5, 7, 8 , 9 };
Mat dataMat(5,4,CV_64FC1) ;
printf("Source data : \n");
for (int i =0;i<dataMat.rows;i++)
{
for (int j = 0;j<dataMat.cols ;j++)
{
dataMat.at<double>(i,j) = dataSrc[i][j];
printf("%f ",dataSrc[i][j]);
}
printf("\n");
}
Mat covMat;
Mat MeanMat;
calcCovarMatrix(dataMat,covMat,MeanMat,CV_COVAR_NORMAL|CV_COVAR_ROWS);
printf("\n");
printf("CovarMatrix:\n");
for (int i = 0;i<covMat.rows;i++)
{
for (int j = 0;j<covMat.cols ;j++)
{
printf("%f ",covMat.at<double>(i,j));
}
printf("\n");
}
//测试特征值和特征值向量
Mat TestMat(2,2,CV_64FC1) ;
printf("Source data : \n");
for (int i =0;i<TestMat.rows;i++)
{
for (int j = 0;j<TestMat.cols ;j++)
{
TestMat.at<double>(i,j) = dataSrc[i][j];
printf("%f ",dataSrc[i][j]);
}
printf("\n");
}
Mat Eigenvalue,EigenVectors;
eigen(TestMat,Eigenvalue,EigenVectors);
printf("\n");
printf("Eigenvalue is : \n");
for (int i =0;i<Eigenvalue.rows;i++)
{
for (int j = 0;j<Eigenvalue.cols ;j++)
{
printf("%f ",Eigenvalue.at<double>(i,j));
}
printf("\n");
}
printf("\n");
printf("EigenVectors is :\n");
for (int i =0;i<EigenVectors.rows;i++)
{
for (int j = 0;j<EigenVectors.cols ;j++)
{
printf("%f ",EigenVectors.at<double>(i,j));
}
printf("\n");
}
return 0;
}
opencv协方差矩阵和特征值函数
最新推荐文章于 2022-03-11 10:51:26 发布