void MyDlg::OnEnroll()
{
/*HANDLE nHand;*/
CString str;
int ret;
char pszErrorInfo[256];
int i = 0;
//unsigned char UserID[1]=NULL;
CFile fp;
unsigned char* pFeatureData;
HINSTANCE hInst = LoadLibrary("ID_Fpr.DLL");
HINSTANCE hInst1 = LoadLibrary("ID_FprCap.DLL");
unsigned char cScannerType=GetDevice();
OnBeginCap();//10准备采集图像
int nChannel=GetDeviceCount();
typedef int (WINAPI *MYFUNC)();
// 获取函数地址
MYFUNC fun=(MYFUNC)GetProcAddress(hInst, "FP_Begin");
ret=fun(); //初始化操作
if (ret!=1)
{
typedef int(WINAPI *Eor)(int ,char*);
Eor eor=(Eor)GetProcAddress(hInst1,"LIVESCAN_GetErrorInfo");
eor(ret,pszErrorInfo);
str.Format("%s",pszErrorInfo);
m_text = str;
UpdateData(false);
}
m_text = "请按压手指...";
UpdateData(false);
int X,Y=0, W,H=0;
typedef int(WINAPI *MYFUN1)(int,int*,int*,int*,int*);
MYFUN1 fun1=NULL;
fun1=(MYFUN1)GetProcAddress(hInst1,"LIVESCAN_GetCaptWindow");
ret = fun1(nChannel,&X,&Y,&W,&H);
if (ret!=1)
{
typedef int(WINAPI *Eor)(int ,char*);
Eor eor=(Eor)GetProcAddress(hInst1,"LIVESCAN_GetErrorInfo");
eor(ret,pszErrorInfo);
str.Format("%s",pszErrorInfo);
m_text = str;
UpdateData(false);
}
for (i=0;i<3;i++)
{
typedef int(WINAPI *RAW)(int,unsigned char*);
RAW raw=(RAW)GetProcAddress(hInst1,"LIVESCAN_GetFPRawData");
ret = raw(nChannel,imageRAW);//获取一帧RAW图像
if (ret!=1)
{
typedef int(WINAPI *Eor)(int ,char*);
Eor eor=(Eor)GetProcAddress(hInst1,"LIVESCAN_GetErrorInfo");
eor(ret,pszErrorInfo);
str.Format("%s",pszErrorInfo);
m_text = str;
UpdateData(false);
}
/*typedef int(WINAPI *MYFUN2)(int,unsigned char*);
MYFUN2 fun2=(MYFUN2)GetProcAddress(hInst1,"LIVESCAN_GetFPBmpData");
fun2(nChannel,imageBMP);
ImgData2BMP();*/
HBITMAP hbitmap = BufferToHBITMAP(GetDC()->m_hDC,imageBMP);
DisBMPByHBitmap(GetDlgItem(IDC_BMPF1+i)->m_hWnd,hbitmap,1);
DeleteObject(hbitmap);
memset(featurebuf1+i*512, 0, 512);
memcpy(image, imageRAW,W*H);
typedef int(WINAPI *MYFUN3)(unsigned char,unsigned char,unsigned char*,unsigned char*);
MYFUN3 fun3=(MYFUN3)GetProcAddress(hInst," FP_FeatureExtract");
ret=fun3(cScannerType, 0x11, (featurebuf1+i*512) ,(pFeatureData+i));
str.Format("Finger%d.fea",i);
fp.Open(str,CFile::modeWrite|CFile::modeCreate,NULL);
fp.Write(featurebuf1+i*512,512);
fp.Close();
unsigned char Q = 0L;
if (ret)
{typedef int(WINAPI *Eor)(int ,char*);
Eor eor=(Eor)GetProcAddress(hInst1,"LIVESCAN_GetErrorInfo");
eor(ret,pszErrorInfo);
str.Format("%s",pszErrorInfo);
m_text = str;
UpdateData(false);
}
m_text = "请再次按压手指...";
UpdateData(false);
}
unsigned char pFeatDate[3][512] = {0};
float * pfSimilarity;
memcpy(pFeatDate[0], featurebuf1, 512);
memcpy(pFeatDate[1], featurebuf1+512, 512);
memcpy(pFeatDate[2], featurebuf1+1024, 512);
typedef int(*MYFUN4)(unsigned char*,unsigned char*,float *);
MYFUN4 fun4=(MYFUN4)GetProcAddress(hInst,"FeatureMatch");
int MATCH0= fun4(pFeatDate[0],pFeatDate[1],pfSimilarity);
int MATCH1= fun4(pFeatDate[1],pFeatDate[2],pfSimilarity);
int MATCH2= fun4(pFeatDate[0],pFeatDate[2],pfSimilarity);
int avg=(MATCH0+MATCH1+MATCH2)/3;
if(avg>0.8){
unsigned char* pnScore;
typedef int(*MYFUN5)(unsigned char*,unsigned char*);
MYFUN5 fun5=(MYFUN5)(hInst,"FP_GetQualityScore");
int Score0=fun5(featurebuf1,pnScore);
int Score1=fun5((featurebuf1+1*512),pnScore);
int Score2=fun5((featurebuf1+2*512),pnScore);
unsigned char * pCompressedImgBuf[1024] ;
unsigned char strBuf[256] ;
typedef int(*MYFUN6)(unsigned char,unsigned char,unsigned char,unsigned char*,int,unsigned char*,unsigned char);
MYFUN6 fun6=(MYFUN6)(hInst,"FP_Compress");
unsigned char cEnrolResult=0x1;
int nCompressRatio=4;
unsigned char *pFingerImgBuf;
if(Score0<Score1&&Score1<Score2||Score1<Score0&&Score0<Score2){
fun6(cScannerType, cEnrolResult, 0x11 ,(featurebuf1+2*512),nCompressRatio, pCompressedImgBuf[1024], strBuf[256] );
typedef int(*MYFUN7)(unsigned char*,unsigned char*,unsigned char);
MYFUN7 fun7=(MYFUN7)(hInst,"FP_Decompress");
fun7( pCompressedImgBuf[1024] ,pFingerImgBuf,strBuf[256]);
fp.Open("Finger.bmp",CFile::modeWrite|CFile::modeCreate,NULL);
fp.Write(pCompressedImgBuf,512);
fp.Close();
}
if(Score0<Score2&&Score2<Score1||Score2<Score0&&Score0<Score1){
fun6(cScannerType, cEnrolResult, 0x11 ,(featurebuf1+1*512),nCompressRatio, pCompressedImgBuf[1024], strBuf[256] );
typedef int(*MYFUN7)(unsigned char*,unsigned char*,unsigned char);
MYFUN7 fun7=(MYFUN7)(hInst,"FP_Decompress");
fun7( pCompressedImgBuf[1024] ,pFingerImgBuf,strBuf[256]);
fp.Open("Finger.bmp",CFile::modeWrite|CFile::modeCreate,NULL);
fp.Write(pCompressedImgBuf,512);
fp.Close();
}
if(Score1<Score2&&Score2<Score0||Score2<Score1&&Score1<Score0){
fun6(cScannerType, cEnrolResult, 0x11 ,(featurebuf1),nCompressRatio, pCompressedImgBuf[1024], strBuf[256] );
typedef int(*MYFUN7)(unsigned char*,unsigned char*,unsigned char);
MYFUN7 fun7=(MYFUN7)(hInst,"FP_Decompress");
fun7( pCompressedImgBuf[1024] ,pFingerImgBuf,strBuf[256]);
fp.Open("Finger.bmp",CFile::modeWrite|CFile::modeCreate,NULL);
fp.Write(pCompressedImgBuf,512);
fp.Close();
}

这是报错内容 是本人未初始化。在生成过程中,
1>e:\kaifa\viewdemo4\viewdemo4\mydlg.cpp(581): warning C4700: 使用了未初始化的局部变量“pFeatureData”
1>e:\kaifa\viewdemo4\viewdemo4\mydlg.cpp(609): warning C4700: 使用了未初始化的局部变量“pfSimilarity”
1>e:\kaifa\viewdemo4\viewdemo4\mydlg.cpp(617): warning C4700: 使用了未初始化的局部变量“pnScore”
1>e:\kaifa\viewdemo4\viewdemo4\mydlg.cpp(629): warning C4700: 使用了未初始化的局部变量“strBuf”
1>e:\kaifa\viewdemo4\viewdemo4\mydlg.cpp(629): warning C4700: 使用了未初始化的局部变量“pCompressedImgBuf”
1>e:\kaifa\viewdemo4\viewdemo4\mydlg.cpp(632): warning C4700: 使用了未初始化的局部变量“pFingerImgBuf”
1>e:\kaifa\viewdemo4\viewdemo4\mydlg.cpp(668): warning C4700: 使用了未初始化的局部变量“pnScore”
1>e:\kaifa\viewdemo4\viewdemo4\mydlg.cpp(680): warning C4700: 使用了未初始化的局部变量“strBuf”
1>e:\kaifa\viewdemo4\viewdemo4\mydlg.cpp(680): warning C4700: 使用了未初始化的局部变量“pCompressedImgBuf”
1>e:\kaifa\viewdemo4\viewdemo4\mydlg.cpp(683): warning C4700: 使用了未初始化的局部变量“pFingerImgBuf”
上面这些全是输出参数,本人应该怎么做?简直迷茫
20
你的这个pFeatureData没有初始化
20
5
unsigned char pFeatureData[1024];
15