opencv实现PCA的一个程序,输出的特征值有问题,指点下问题出在哪??

#include"stdafx.h"#include<stdio.h>#include<cv.h>#include<highgui.h>voidmain(){floatV... #include "stdafx.h"
#include <stdio.h>
#include <cv.h>
#include <highgui.h>
void main()
{float Vector[10][10000];
char fileName[40];
int img_num;
int start;
for(img_num=0;img_num<10;img_num++)
{sprintf(fileName, "test%d.jpg", img_num+1);
IplImage *img_src = cvLoadImage(fileName, CV_LOAD_IMAGE_GRAYSCALE);
IplImage *img_gray = cvCreateImage(cvSize(100,100), 8, 1);
cvResize(img_src, img_gray);
CvMat *Mat_tmp = cvCreateMat(img_gray->height, img_gray->width, CV_32FC1);
cvConvert(img_gray, Mat_tmp);
start = 0;
for(int i=0;i<Mat_tmp->cols;i++)
{for(int j=0;j<Mat_tmp->rows;j++)
{double value = cvmGet(Mat_tmp, i, j);
Vector[img_num][start] = value;
start++;}}
cvReleaseImage(&img_src);
cvReleaseImage(&img_gray);
cvReleaseMat(&Mat_tmp);}
CvMat data;
cvInitMatHeader( &data, 10, 100*100, CV_32FC1, Vector);
CvMat *pAvgVector = cvCreateMat( 1, 100*100, CV_32FC1);
CvMat *pEigenValue = cvCreateMat( 1, 10, CV_32FC1);
CvMat *pEigenVector = cvCreateMat( 10, 100*100, CV_32FC1);
cvCalcPCA(&data, pAvgVector, pEigenValue, pEigenVector, CV_PCA_DATA_AS_ROW);
for(int i=0; i<10; i++)
{printf("%f\n", cvmGet(pEigenValue, 0, i));}
CvMat *mat = cvCreateMat(100, 100, CV_32FC1);
start = 0;
for(int i=0; i<100; i++)
{for(int j=0; j<100; j++){
cvmSet(mat, i, j, cvmGet(pEigenVector, 0, start));
start++;}}
cvNormalize(mat, mat, 255);
cvShowImage("1", mat);
cvWaitKey(0);

cvReleaseMat(&mat);
cvReleaseMat(&pAvgVector);
cvReleaseMat(&pEigenValue);
cvReleaseMat(&pEigenVector);
}
展开
 我来答
监控之星3
2011-03-25 · TA获得超过198个赞
知道答主
回答量:182
采纳率:0%
帮助的人:114万
展开全部
你把结果也贴一下,还有test。jpg
追问
test*.jpg是一系列人脸图片,通过这个程序,已经可以得到正确的meanface,并显示到窗口上了,但是特征值一直不对,我这组图片得到的特征值第一个是3.6758e+006,其余九个都是-4.31602e+008,必然有问题啊,而且这种数字表示什么意思我也不清楚,求大神指点!!!
学会儿数学
2012-12-15
知道答主
回答量:3
采纳率:0%
帮助的人:4504
展开全部
那最后找到问题的原因了吗,最近也在学习,求解答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式