64,642
社区成员
发帖
与我相关
我的任务
分享
vectro<unsigned char *> vecpData;
for(int i=0; i<3; i++) { // 次数可变
unsigned char * pFeatureData = NULL;
nRlt = FP_FeatureExtract(17, 11, imageRAW, pFeatureData);
vecpData.push_back(pFeatureData);
}
//用完之后清理什么的也很方便。
float pfS[3];
...,&pfS[0]);
...,&pfS[1]);
...,&pfS[2]);
TRACE(...,pfS[0]);
TRACE(...,pfS[1]);
TRACE(...,pfS[2]);
和
float pfS0,pfS1,pfS2;
...,&pfS0);
...,&pfS1);
...,&pfS2);
TRACE(...,pfS0);
TRACE(...,pfS1);
TRACE(...,pfS2);
没有本质区别。
nRlt= FP_FeatureMatch(&pFeatureData[3][0],&pFeatureData[3][1],&pfSimilarity[0]);
nRlt= FP_FeatureMatch(&pFeatureData[3][0],&pFeatureData[3][2],&pfSimilarity[1]);
nRlt= FP_FeatureMatch(&pFeatureData[3][1],&pFeatureData[3][2],&pfSimilarity[2]);
还是我&pfSimilarity[0]直接指向了float pfSimilarity[3]={0.0};这个,所以导致没有值呢int regRes = pFeatureData[3][4];
也能编译成功。不知道对不对
for (int i=0;i<3;i++){
TRACE("%d [%s]\n",i,pFeatureData[i]);
static float pfSimilarity[3]={0.0};
nRlt= FP_FeatureMatch(pFeatureData[0],pFeatureData[1],&pfSimilarity[0]);
nRlt= FP_FeatureMatch(pFeatureData[0],pFeatureData[2],&pfSimilarity[1]);
nRlt= FP_FeatureMatch(pFeatureData[1],pFeatureData[2],&pfSimilarity[2]);
TRACE("%d [%s]\n",i,pfSimilarity[i]);
}
为什么打印的pfSimilarity为null;
0 [CW]
0 [(null)]
1 [CS]
1 [(null)]
2 [CS]
2 [(null)]
我感觉是不是nRlt= FP_FeatureMatch(pFeatureData[0],pFeatureData[2],&pfSimilarity[1])这里参数传错了int regRes = (int)(pFeatureData[2][4]);
int regRes = pFeatureData[4];
这个4是判断是否注册成功的,就是说如果字节为1那么成功,2代表失败,3代表未注册。
s[0]=QualityScore[0];
s[1]=QualityScore[1];
s[2]=QualityScore[2];
TRACE("%d %d %d\n",s[0],s[1],s[2]);
for循环3次打印的值是、
84 0 0
0 76 0
0 0 80
为啥前面的值都给覆盖了。我想打印
84 0 0
84 76 0
84 76 80
就是不被覆盖。求解啊
for(int i=0;i<3;i++){
TRACE("%d [%s]\n",i,pFeatureData[i]);
float pfSimilarity[3]={0.0};
nRlt= FP_FeatureMatch(pFeatureData[0],pFeatureData[1],&pfSimilarity[0]);
nRlt= FP_FeatureMatch(pFeatureData[0],pFeatureData[2],&pfSimilarity[1]);
nRlt= FP_FeatureMatch(pFeatureData[1],pFeatureData[2],&pfSimilarity[2]);
TRACE("%d [%f]\n",i,pfSimilarity[i]);
float avgf= (pfSimilarity[0]+pfSimilarity[1]+pfSimilarity[2])/3;
if(avgf>0.8){
int s0=QualityScore[0];
int s1=QualityScore[1];
int s2=QualityScore[2];
if(s0<s1&&s1<s2||s1<s0&&s0<s2){
fp.Open(L"Finger.tlp",CFile::modeWrite|CFile::modeCreate,NULL);
fp.Write(Templatebuf,512);
fp.Close();
}else if(s0<s2&&s2<s1||s2<s0&&s0<s1){
fp.Open(L"Finger.tlp",CFile::modeWrite|CFile::modeCreate,NULL);
fp.Write(Templatebuf,512);
fp.Close();
}else{
fp.Open(L"Finger.tlp",CFile::modeWrite|CFile::modeCreate,NULL);
fp.Write(Templatebuf,512);
fp.Close();
}
}
}
我的天 我感觉我这代码太繁琐 能不能优化一下啊
//获取图像的质量
unsigned char pnScore[1];
nRlt = FP_GetQualityScore(imageRAW, pnScore);
int QualityScore = pnScore[0];
这段也得需要保存 ,那么用上面的应该也能行吧