64,652
社区成员
发帖
与我相关
我的任务
分享
void load_data(double *T,IplImage *src,int k)
{
int i,j;
//一副图像压缩成一维的,存在T的一列里
for (i=0;i<IMG_HEIGHT;i++)
{
for (j=0;j<IMG_WIDTH;j++)
{
T[(i*IMG_WIDTH+j)*TRAIN_NUM+k-1]= (double)(unsigned char)src->imageData[i*IMG_WIDTH+j];
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
double *T,*L,*m,*b,*q,*c,*p_q,*projected_train,*T_test,*projected_test,*eigenvector,*Euc_dist;
double eps,temp;
int i,j,flag,iteration,num_q;
char res[20];
IplImage *tmp_img,*test_img;
T = (double *)malloc(sizeof(double)*IMG_HEIGHT*IMG_WIDTH*TRAIN_NUM); //原始数据
T_test = (double *)malloc(sizeof(double)*IMG_HEIGHT*IMG_WIDTH*1); //测试数据
m = (double *)malloc(sizeof(double)*IMG_HEIGHT*IMG_WIDTH); //平均值
L = (double *)malloc(sizeof(double)*TRAIN_NUM*TRAIN_NUM); //L=T'*T,协方差矩阵
b = (double *)malloc(sizeof(double)*TRAIN_NUM); //L的特征值
q = (double *)malloc(sizeof(double)*TRAIN_NUM*TRAIN_NUM); //L特征值对应的特征向量
c = (double *)malloc(sizeof(double)*TRAIN_NUM); //实对称三对角矩阵的次对角线元素
eps = 0.000001;
memset(L,0,sizeof(double)*TRAIN_NUM*TRAIN_NUM);
//存储图像数据到T矩阵
for (i=1;i<=TRAIN_NUM;i++)
{
sprintf(res,"C:\\Users\\lenovo\\Documents\\Visual Studio 2010\\Projects\\123\\Debug\\%d.jpg",i);
tmp_img = cvLoadImage(res,CV_LOAD_IMAGE_GRAYSCALE);
load_data(T,tmp_img,i);
}