资源简介
使用opencv2.4.3读图,使用QR算法求解特征值特征向量,PCA由C实现。能跑!

代码片段和文件信息
// face_recognition.cpp : 定义控制台应用程序的入口点。
//
#include “stdafx.h“
#include “Process.h“
#include “My_Matrix.h“
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 epstemp;
int ijflagiterationnum_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(L0sizeof(double)*TRAIN_NUM*TRAIN_NUM);
//存储图像数据到T矩阵
for (i=1;i<=TRAIN_NUM;i++)
{
sprintf(res“.\\TrainDatabase\\%d.jpg“i);
tmp_img = cvLoadImage(resCV_LOAD_IMAGE_GRAYSCALE);
load_data(Ttmp_imgi);
}
//求T矩阵行的平均值
calc_mean(Tm);
//构造协方差矩阵
calc_covariance_matrix(TLm);
//求L的特征值,特征向量
iteration = 60;
cstrq(LTRAIN_NUMqbc);
flag = csstq(TRAIN_NUMbcqepsiteration); //数组q中第j列为数组b中第j个特征值对应的特征向量
if (flag<0)
{
printf(“fucking failed!\n“);
}else
{
printf(“success to get eigen value and vector\n“);
}
//对L挑选合适的特征值,过滤特征向量
num_q=0;
for (i=0;i {
if (b[i]>1)
{
num_q++;
}
}
p_q = (double *)malloc(sizeof(double)*TRAIN_NUM*TRAIN_NUM); //挑选后的L的特征向量,仅过滤,未排序
projected_train = (double *)malloc(sizeof(double)*TRAIN_NUM*num_q); //投影后的训练样本特征空间
eigenvector = (double *)malloc(sizeof(double)*IMG_HEIGHT*IMG_WIDTH*num_q);//Pe=λeQ(Xe)=λ(Xe),投影变换向量
pick_eignevalue(bqp_qnum_q);
get_eigenface(p_qTnum_qprojected_traineigenvector);
//读取测试图像
test_img = cvLoadImage(“.\\TestDatabase\\4.jpg“CV_LOAD_IMAGE_GRAYSCALE);
projected_test = (double *)malloc(sizeof(double)*num_q*1);//在特征空间投影后的测试样本
for (i=0;i {
for (j=0;j {
T_test[i*IMG_WIDTH+j] = (double)(unsigned char)test_img->imageData[i*IMG_WIDTH+j] - m[i*IMG_WIDTH+j];
}
}
//将待测数据投影到特征空间
memset(projected_test0sizeof(double)*num_q);
matrix_mutil(projected_testeigenvectorT_testnum_qIMG_WIDTH*IMG_HEIGHT1);
//计算projected_test与projected_train中每个向量的欧氏距离
Euc_dist = (double *)malloc(sizeof(double)*TRAIN_NUM);
for (i=0;i {
temp = 0;
for (j=0;j {
temp = temp + (projected_test[j]-projected_train[j*TRAIN_NUM+i])*(projected_test[j]-projected_train[j*TRAIN_NUM+i]);
}
Euc_dist[i] = temp;
//printf(“%f \n“temp);
}
//寻找最小距离
double min = Euc_dist[0];
int label;
for (i=0;i {
if (min>=Euc_dist[i])
{
min = Euc_dist[i];
label = i;
}
}
printf(“%d.jpg is mathcing!“label+1);
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2014-01-21 13:04 face_recognition\
目录 0 2014-01-21 10:37 face_recognition\Debug\
文件 36864 2014-01-21 12:45 face_recognition\Debug\face_recognition.exe
文件 361264 2014-01-21 12:45 face_recognition\Debug\face_recognition.ilk
文件 1412096 2014-01-21 12:45 face_recognition\Debug\face_recognition.pdb
目录 0 2014-01-21 12:28 face_recognition\face_recognition\
文件 914 2014-01-19 10:55 face_recognition\face_recognition.sln
文件 15360 2014-01-21 12:51 face_recognition\face_recognition.suo
目录 0 2014-01-21 12:45 face_recognition\face_recognition\Debug\
文件 11206 2014-01-21 12:45 face_recognition\face_recognition\Debug\BuildLog.htm
文件 663 2014-01-21 10:32 face_recognition\face_recognition\Debug\face_recognition.exe.em
文件 728 2014-01-21 10:33 face_recognition\face_recognition\Debug\face_recognition.exe.em
文件 621 2014-01-21 12:45 face_recognition\face_recognition\Debug\face_recognition.exe.intermediate.manifest
文件 121731 2014-01-21 12:44 face_recognition\face_recognition\Debug\face_recognition.obj
文件 3211264 2014-01-21 10:32 face_recognition\face_recognition\Debug\face_recognition.pch
文件 65 2014-01-21 12:45 face_recognition\face_recognition\Debug\mt.dep
文件 12754 2014-01-21 10:32 face_recognition\face_recognition\Debug\My_Matrix.obj
文件 100388 2014-01-21 12:44 face_recognition\face_recognition\Debug\Process.obj
文件 12245 2014-01-21 10:32 face_recognition\face_recognition\Debug\stdafx.obj
文件 633856 2014-01-21 12:44 face_recognition\face_recognition\Debug\vc90.idb
文件 987136 2014-01-21 12:44 face_recognition\face_recognition\Debug\vc90.pdb
文件 3241 2014-01-21 10:45 face_recognition\face_recognition\face_recognition.cpp
文件 5517 2014-01-21 10:37 face_recognition\face_recognition\face_recognition.vcproj
文件 1409 2014-01-21 12:51 face_recognition\face_recognition\face_recognition.vcproj.jst-PC.jst.user
文件 3086 2014-01-21 10:32 face_recognition\face_recognition\My_Matrix.cpp
文件 305 2014-01-21 10:31 face_recognition\face_recognition\My_Matrix.h
文件 2480 2014-01-21 12:28 face_recognition\face_recognition\Process.cpp
文件 413 2014-01-21 10:38 face_recognition\face_recognition\Process.h
文件 1237 2014-01-19 10:55 face_recognition\face_recognition\ReadMe.txt
文件 221 2014-01-19 10:55 face_recognition\face_recognition\stdafx.cpp
文件 233 2014-01-19 10:55 face_recognition\face_recognition\stdafx.h
............此处省略34个文件信息
相关资源
- 一个人脸识别程序源码
- LDA 人脸识别
- 核主成分分析方法——特征提取,去
- PCAAD7.0教程
- halcon简单实现人脸识别.hdev
- 满足PCAC关系的晶格QCD的轴向矢量形状
- WinPcap+中文技术文档
- 人脸识别开源SDK源码
- 百度人脸识别Demo
- delphi百度人脸识别离线SDK demo
- 讯飞人脸识别eclipse版
- Delphi7调用虹软人脸识别的测试
- [b115]FPGA上运行人脸识别源代码.zip
- shape_predictor_68_face_landmarks.dat.bz2 68个标
- arduino pca9685多舵机同时控制案例
- labview人脸识别283682
- 一种基于LBP和CNN的人脸识别算法
- 基于CAFFE的人脸识别系统
- 打开软件PCAD
- LabVIEW的人脸识别代码
- PCA结合马氏距离
- DNS隐秘隧道pcap包
- 基于深度学习实现人脸识别包含模型
- 人脸识别必备的FERET人脸数据库
- 经典的人脸识别论文,包含中、英文
- WinPcap4.1.1官网正式版
- H5人脸识别+活体检测眨眼摇头
- iftop-0.17
- 人脸识别图像预处理技术
- iOS平台下人脸识别系统实现研究
评论
共有 条评论