if (biBitCount == 8) { bmfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + 256*4; bmfh.bfSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + 256*4 + byteCount; } else if (biBitCount == 24) { bmfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER); bmfh.bfSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + byteCount; } else { MessageBox(NULL, \错误\ return; } bmih.biBitCount = biBitCount; bmih.biWidth = width; bmih.biHeight = height; bmih.biSize = 40; bmih.biPlanes = 1; bmih.biCompression = BI_RGB; bmih.biSizeImage = bmfh.bfSize; bmih.biClrImportant = 0; bmih.biClrUsed = 0; bmih.biXPelsPerMeter = 0; bmih.biYPelsPerMeter = 0; CFile f; //保存位图 if (f.Open(SavePath, CFile::modeCreate | CFile::modeWrite)) { f.Write(&bmfh, sizeof(bmfh)); f.Write(&bmih, sizeof(bmih)); if (biBitCount == 8) { RGBQUAD rgb[256]; int i(0); for (; i < 256; ++i) { rgb[i].rgbBlue = i; rgb[i].rgbGreen = i; rgb[i].rgbRed = i;
rgb[i].rgbReserved = 0; } //修改颜色表255对应的颜色 rgb[255].rgbBlue = 0; rgb[255].rgbGreen = 0; rgb[255].rgbRed = 255; f.Write(rgb, sizeof(RGBQUAD)*256); } f.Write(pBits, byteCount); f.Close(); } else { MessageBox(NULL, \保存图像失败\错误\ return; } }
void DrawCross(BYTE* pBits, vector
void DrawCross(BYTE* pBits1, BYTE* pBits2, vector
void SaveList(vector
{ FILE* pTxtFile= fopen(txtFile, \ if (!pTxtFile) return; fprintf(pTxtFile, \特征点数: %d\\n\\n\ fprintf(pTxtFile, \坐标X\\t坐标Y\\t兴趣值\\n\ vector
void SaveList(vector
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { if (argc != 15) { ::MessageBox(NULL,\启动参数不正确,请从GUI.exe或命令行参数启动\ return FAILURE; } system(\ system(\ int nRetCode = 0; if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { cerr << _T(\ nRetCode = 1; return nRetCode; } CString srcFileLeft, srcFileRight, dstFileLeft, dstFileRight, txtFile; CString threshold_Left,window1_Left,window2_Left; CString threshold_Right,window1_Right,window2_Right; CString CoRelated,window3,flag1; //启动参数
srcFileLeft = argv[1]; srcFileRight = argv[2]; dstFileLeft = argv[3]; dstFileRight = argv[4]; txtFile = argv[5];
threshold_Left = argv[6]; //阈值 window1_Left = argv[7]; window2_Left = argv[8]; threshold_Right = argv[9]; window1_Right = argv[10]; window2_Right = argv[11]; CoRelated = argv[12]; window3 = argv[13]; flag1 = argv[14]; //判断是否在创建结果文件后显示 int m_threshold_L = atoi(threshold_Left); int m_window1_L = atoi(window1_Left); int m_window2_L = atoi(window2_Left); int m_threshold_R = atoi(threshold_Right); int m_window1_R = atoi(window1_Right); int m_window2_R = atoi(window2_Right);
double m_CoRelated = (double)atoi(CoRelated) / 100; int m_window3 = atoi(window3); int m_flag1 = atoi(flag1);
if (GetFileAttributes(srcFileLeft) == -1) { CString err; err.Format(\文件:%s不存在\ ::MessageBox(NULL,err, \ return FAILURE; }
if (GetFileAttributes(srcFileRight) == -1) { CString err; err.Format(\文件:%s不存在\ ::MessageBox(NULL,err, \ return FAILURE; }
//打开2幅影像
FILE* pSrcFileLeft = NULL;
pSrcFileLeft = fopen(srcFileLeft,\if(pSrcFileLeft == NULL) { printf(\原始左片影像打开失败\\n\