资源简介
使用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个文件信息
相关资源
- 基于深度学习的人脸识别研究
- 基于PCA特征脸的人脸识别
- 人脸识别 20122213406983.rar
- pca的人脸识别程序(包括orl人脸库)
- 中科院山世光老师开源的Seetaface人脸
- SAR 解压工具SAPCAR.EXE文件
- PCA和LDA在高光谱图像降维中的应用综
- AppCan项目源码
- 人脸识别离线SDK配合博客使用
- SIFT\\PCA-SIFT\\SURF论文源代码
- 树莓派人脸识别USB摄像头
- PCAP685+STM32F103
- openCV图像检测资源包
- Opencv 下Cascade Classifier实现人脸识别的
- PCA+SVM+RF
- ipcamadapter_x64 ip camera adapter 64 bit
- 基于人脸识别考勤系统的设计与实现
- 人脸识别系统程序
- tcpdump 源代码
- 安卓原生FaceDetection人脸识别
- 主成分极限学习机.rar
- 基于深度学习的三维人脸识别
- 调用百度接口的人脸识别.net
- 百度接口实现人脸识别web
- 基于几何特征与深度数据的三维人脸
- 百张人脸识别测试头像
- 调试通过的KPCA核主成分分析人脸识别
- OpenCV人脸识别290071
- 主成分分析c代码与原理
- 用于人脸识别的AR人脸库
评论
共有 条评论