www.pudn.com > hongmodingweiyuanchengxu.rar > MyHeadFile.h
//头文件
/*
本程序是练习时顺手写的程序,简陋至极,欢迎高手指点。
“打开”一幅虹膜样本就可以进行操作。
作者: 吴春雷
QQ: 26885133
群: 29153069
EMail: wuchunlei@163.com
*/
#include "ReadBmpFile.h"
#include "PicOpt.h"
#include "math.h"
CReadBmpFile m_ReadBmpFile;
unsigned char **sBmpData;
BITMAPINFOHEADER stBmpInfoHeader;
BITMAPFILEHEADER stBmpFileHeader;
RGBQUAD *stRgbQuad;
long nWidth,nHeight; //保存原始图像高度
long nResultX,nResultY,nResultRP,nResultR; //最终的瞳孔圆心、瞳孔半径、虹膜半径
unsigned char **sNewBmpData; //保存粗定位得到的角膜外切矩形内的BmpData数据
BITMAPINFOHEADER stNewBmpInfoHeader;
BITMAPFILEHEADER stNewBmpFileHeader;
unsigned char **sOldBmpData; //保存最原始的数据
BITMAPINFOHEADER stOldBmpInfoHeader;
BITMAPFILEHEADER stOldBmpFileHeader;
void ShowBmpToDC(CDC *pDC,long nX,long nY,unsigned char **sBmpData,BITMAPINFOHEADER stBmpInfoHeader){ //显示图片到屏幕上
long nHeight,nWidth;
long i,j;
nHeight=stBmpInfoHeader.biHeight;
nWidth=stBmpInfoHeader.biWidth;
pDC->MoveTo(nX,nY); //移动到显示图片的位置
for (i=0;iSetPixel(j+nX,nHeight-i+nY,RGB(sBmpData[i][j],sBmpData[i][j],sBmpData[i][j]));
}
}
}
void SaveBmpFile(CString sFilePath,unsigned char **sBmpData,BITMAPINFOHEADER stBmpInfoHeader,
BITMAPFILEHEADER stBmpFileHeader,RGBQUAD *stRgbQuad){ //保存文件
int i,j;
CFile m_File;
int nBC;
unsigned char sTemp[4]={0},cTemp;;
if (!m_File.Open((LPCTSTR)sFilePath,CFile::modeWrite | CFile::modeCreate)){
AfxMessageBox("文件打开失败!");
return ;
}
//写入头文件信息
m_File.Write(&stBmpFileHeader,sizeof(BITMAPFILEHEADER));
m_File.Write(&stBmpInfoHeader,sizeof(BITMAPINFOHEADER));
m_File.Write(stRgbQuad,sizeof(RGBQUAD)*stBmpInfoHeader.biClrUsed);
m_File.Seek(1078,CFile::begin);
//计算补偿
nBC=4-stBmpInfoHeader.biWidth%4;
if (nBC==4) nBC=0;
CString sStr;
sStr.Format("%d",nBC);
AfxMessageBox(sStr);
//写入数据
for (i=0;i