用C语言对BMP图像进行二值化处理.txt
include include include include include include include int bitmapToGraychar *OriginalBMP,char *ResultBMP; int main bitmapToGray“ExljFilepictureProcessingLONGJIANG.bmp“, “ExljFilepictureProcessingLONGJIANG2.bmp“; return 0; int bitmapToGraychar *OriginalBMP,char *ResultBMP unsigned char *BMP24Image,*BMP8Image; BITMAPFILEHEADER fh; BITMAPINFOHEADER ih; RGBQUAD Color256; BYTE CTemp3; 颜色分量 int Row,Col,nCol; int i,j,k; FILE *f,*p; BMP24Imageunsigned char*calloc2000*2000,sizeofunsigned char; BMP8Imageunsigned char*calloc1000*1000,sizeofunsigned char; iffOriginalBMP,“rb“NULL printf“open s error,please checkn“; return 0; fread iffh.bfTypeMB printf“This is not a BMP picturen“; return 0; fh.bfOffBitssizeofBITMAPFILEHEADERsizeofBITMAPINFOHEADER; sizeofRGBQUAD*256; fread Rowih.biHeight; Colih.biWidth; ColCol/4*4; nColCol*4/4*4; 扫描宽度 ih.biBitCount8; 改变像素位数大小,8位,256色 freadBMP24Image,sizeofunsigned char,Row*Col,f; fori0;i128 BMP8Imagei*Colj255; else BMP8Imagei*Colj100; fork0;k3;k CTempkBMP24Imagei*nColj*3k; BMP8Imagei*ColjCTemp2*0.299CTemp1*0.587CTemp0*0.114;转化公式 fclosef; ifpResultBMP,“wb“NULL printf“open savefile errorn“; return 0; fori0;i256;i 调色板 Colori.rgbBluei; Colori.rgbGreeni; Colori.rgbRedi; Colori.rgbReserved0; fwrite fwrite fwriteColor,sizeofRGBQUAD,256,p; fwriteBMP8Image,sizeofunsigned char,Row*Col,p; fclosep; return 0;