如何实现对人脸图像数据库中的某一图像进行查找、对比、分析? 例如有一个人脸图像库,如何利用摄像头即时捕捉的人脸图像,与已经保存的人脸数据库中查找、对比、辨别等,希望能得到的实现思想即可。 希望与对此感兴趣的网友交流! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 俺前天才完成的3层BP网模板,就为你的10分拿出来抛砖引玉.const int N0=32,N1=14,N2=4; //------结点数double a1[(N1+1)*(N0+1)],a2[N2*(N1+1)];//-------权值double x[(N0+1)];//------输入double a;//----logistic 函数参数double o1[(N1+1)],o2[N2];//-------各神经元输出标量double s1[(N1+1)],s2[N2];//---------局部梯度域double n; //-----------学习率//----------网络初始化 //---------初始化特征 for(int i=0;i<(N1+1)*(N0+1);i++) { a1[i]=1; } for(int i=0;i<(N2)*(N1+1);i++) { a2[i]=1; } a=1;//----logistic 函数参数 n=0.8; //---------学习率//----------------神经网络 //---------计算隐藏层的输出/输出层端的输入 double v=0; for(i=0;i<N1;i++) { v=0; for(j=0;j<N0+1;j++) { //线性求和 v+=(a1[i*(N0+1)+j]*x[j]); } //logistic函数(sigmoid) o1[i]=(double)1.0/(1.0+exp(-a*v)); } o1[N1]=1; //--------输出层偏置输入=1 //------------计算输出层输出 for(i=0;i<N2;i++) { v=0; for(j=0;j<N1+1;j++) { //线性求和 v+=(a2[i*(N1+1)+j]*o1[j]); } //logistic函数(sigmoid) o2[i]=(double)1.0/(1.0+exp(-a*v)); }//---------------------------------------------- if(mode==0) { xp=5000; int xx[N2]; //------对输出层神经元的输出量化到0或1 for(i=0;i<N2;i++) { if(o2[i]<0.5) xx[i]=0; else xx[i]=1; } //----------2进制转10进制 int result=0; for(i=0;i<N2;i++) { result+=(xx[i]<<i); } if(result<0) result=0; if(result>9) result=9; CString s; s.Format("%d",result); red.Append(s); } else { char c[2];c[0]=cred.GetAt(count);c[1]=0; int cre=atoi(c); int d[4]; d[0]=cre%2;cre/=2; d[1]=cre%2;cre/=2; d[2]=cre%2;cre/=2; d[3]=cre%2;cre/=2; //-------------输出层调节 //----------计算输出层的局部梯度域 for(i=0;i<N2;i++) { s2[i]=a*((double)d[i]-o2[i])*o2[i]*(1-o2[i]); } ///-------------调整权值 for(i=0;i<N2;i++) { for(j=0;j<N1+1;j++) { a2[i*(N1+1)+j]+=(n*s2[i]*o1[j]); } } //----------------隐藏层调节 //----------计算隐藏层结点局部梯度域 for(i=0;i<N1+1;i++) { double ek=0; for(j=0;j<N2;j++) { ek+=(s2[j]*a1[j*(N1+1)+i]); } s1[i]=a*o1[i]*(1-o1[i])*ek; } ///-------------调整权值 for(i=0;i<N1+1;i++) { for(j=0;j<N0+1;j++) { a1[i*(N0+1)+j]+=(n*s1[i]*x[j]); } } count++; } 神经网络的代码简单,关键是怎么训练,网络结构,另外,这个问题我觉得还是pca是王道 感谢sboom兄,分数虽少,望笑纳! OPENCV利用mat结构显示图像,各位给小弟看看为什么显示图像错误呢? active控件初始化大小 发现一个大家应该引起注意的问题 如何改变static text 的颜色? ShellExecute() 运行程序去打开一个文件时的问题 请教:连接错误,fatal error C1001: INTERNAL COMPILER ERROR 高分,求助!输入法问题! 对话框应用程序里快捷键怎样实现 ATL中创建的ActiveX控件,是怎么在程序中使用的???????????? 关于子线程结束的问题 如何在两个试图类间传递消息数据 在两个鼠标按钮的消息间通信
double a1[(N1+1)*(N0+1)],a2[N2*(N1+1)];//-------权值
double x[(N0+1)];//------输入
double a;//----logistic 函数参数
double o1[(N1+1)],o2[N2];//-------各神经元输出标量
double s1[(N1+1)],s2[N2];//---------局部梯度域
double n; //-----------学习率
//----------网络初始化
//---------初始化特征
for(int i=0;i<(N1+1)*(N0+1);i++)
{
a1[i]=1;
}
for(int i=0;i<(N2)*(N1+1);i++)
{
a2[i]=1;
}
a=1;//----logistic 函数参数
n=0.8; //---------学习率//----------------神经网络
//---------计算隐藏层的输出/输出层端的输入
double v=0;
for(i=0;i<N1;i++)
{
v=0;
for(j=0;j<N0+1;j++)
{
//线性求和
v+=(a1[i*(N0+1)+j]*x[j]);
}
//logistic函数(sigmoid)
o1[i]=(double)1.0/(1.0+exp(-a*v));
}
o1[N1]=1; //--------输出层偏置输入=1
//------------计算输出层输出
for(i=0;i<N2;i++)
{
v=0;
for(j=0;j<N1+1;j++)
{
//线性求和
v+=(a2[i*(N1+1)+j]*o1[j]);
}
//logistic函数(sigmoid)
o2[i]=(double)1.0/(1.0+exp(-a*v));
}
//----------------------------------------------
if(mode==0)
{
xp=5000;
int xx[N2];
//------对输出层神经元的输出量化到0或1
for(i=0;i<N2;i++)
{
if(o2[i]<0.5)
xx[i]=0;
else
xx[i]=1;
}
//----------2进制转10进制
int result=0;
for(i=0;i<N2;i++)
{
result+=(xx[i]<<i);
} if(result<0)
result=0;
if(result>9)
result=9; CString s;
s.Format("%d",result);
red.Append(s);
}
else
{
char c[2];c[0]=cred.GetAt(count);c[1]=0;
int cre=atoi(c);
int d[4];
d[0]=cre%2;cre/=2;
d[1]=cre%2;cre/=2;
d[2]=cre%2;cre/=2;
d[3]=cre%2;cre/=2; //-------------输出层调节
//----------计算输出层的局部梯度域
for(i=0;i<N2;i++)
{
s2[i]=a*((double)d[i]-o2[i])*o2[i]*(1-o2[i]);
}
///-------------调整权值
for(i=0;i<N2;i++)
{
for(j=0;j<N1+1;j++)
{
a2[i*(N1+1)+j]+=(n*s2[i]*o1[j]);
}
} //----------------隐藏层调节
//----------计算隐藏层结点局部梯度域
for(i=0;i<N1+1;i++)
{
double ek=0;
for(j=0;j<N2;j++)
{
ek+=(s2[j]*a1[j*(N1+1)+i]);
}
s1[i]=a*o1[i]*(1-o1[i])*ek;
}
///-------------调整权值
for(i=0;i<N1+1;i++)
{
for(j=0;j<N0+1;j++)
{
a1[i*(N0+1)+j]+=(n*s1[i]*x[j]);
}
}
count++;
}