-
大小: 3.92MB文件類型: .zip金幣: 2下載: 0 次發(fā)布日期: 2023-10-27
- 語言: C/C++
- 標簽:
資源簡介
利用C語言實現(xiàn)JPEG圖片解碼,轉(zhuǎn)換為BMP圖片,在將其灰度化,自定義閾值二值化。

代碼片段和文件信息
#include?
#include?
#include?
/*以下注釋部分為BMP灰度圖的文件結(jié)構(gòu)(已經(jīng)包含在windows.h文件中在此列出來方便LZ參考)*/
/*
//位圖文件頭
typedef?struct?tagBITMAPFILEHEADER?{
??WORD?bfType;?
??DWORD?bfSize;?
??WORD?bfReserved1;?
??WORD?bfReserved2;?
??DWORD?bfOffBits;?
}?BITMAPFILEHEADER;?
typedef?struct?tagBITMAPINFOHEADER?{?
??DWORD?biSize;?
??LONG?biWidth;?
??LONG?biHeight;?
??WORD?biPlanes;?
??WORD?biBitCount?
??DWORD?biCompression;?
??DWORD?biSizeImage;?
??LONG?biXPelsPerMeter;?
??LONG?biYPelsPerMeter;?
??DWORD?biClrUsed;?
??DWORD?biClrImportant;?
}?BITMAPINFOHEADER;?
//彩色表
typedef?struct?tagRGBQUAD?{?
?BYTE?rgbBlue;
?BYTE?rgbGreen;
?BYTE?rgbRed;
?BYTE?rgbReserved;
}?RGBQUAD;
//位圖信息頭
typedef?struct?tagBITMAPINFO?{?
?BITMAPINFOHEADER?bmiHeader;
?RGBQUAD?bmiColors[1];
}?BITMAPINFO;
*/
void?main()
{//所舉例程為從BMP灰度圖中抽取一層并輸出為圖片
?FILE?*fi*fo;
?UINT?count=0;
?BITMAPFILEHEADER?bmfh;
?BITMAPINFO?bmi;
?int?ij;
?BYTE?p;
?BYTE?buf[2000];
?//fi?=?fopen(“bupt_8bit.bmp““rb“);
?fi?=?fopen(“test.bmp““rb“);
?if(fi==NULL)
?{
??printf(“文件打開錯誤!\n“);
??return;
?}
?//讀取文件頭
?fread(&bmfhsizeof(?bmfh?)?1fi);
?printf(“文件頭信息:\n“);
?printf(“文件類型:%c%c\n“bmfh.bfType%256?bmfh.bfType/256);
?printf(“文件大小:%d\n“bmfh.bfSize);
?printf(“圖像數(shù)據(jù)偏移量:%d\n“bmfh.bfOffBits);
?
?//讀BMP信息頭--------讀彩色表
?fread(&bmisizeof(BITMAPINFO)1fi);
?
?printf(“\n圖像信息:\n“);
?printf(“位圖寬度:%d\n“bmi.bmiHeader.biWidth);
?printf(“位圖高度:%d\n“bmi.bmiHeader.biHeight);
?printf(“每個像素的位數(shù):%d\n“bmi.bmiHeader.biBitCount);
?printf(“位圖數(shù)據(jù)的大小:%d\n“bmi.bmiHeader.biSizeImage);
?printf(“用像素/米表示的水平分辨率:%d\n“bmi.bmiHeader.biXPelsPerMeter);
?printf(“用像素/米表示的垂直分辨率:%d\n“bmi.bmiHeader.biYPelsPerMeter);
?printf(“每個像素的位數(shù):%d\n“bmi.bmiHeader.biBitCount);
?printf(“位圖使用的顏色數(shù):%d\n“bmi.bmiHeader.biClrUsed);
?
?
?for(i=0;i<8;i++)//像為8bits,所以只有8層
?{
??//fo?=?fopen(“bupt_8bit_out.bmp““wb“);
??fo?=?fopen(“bupt_out.bmp““wb“);
??fseek(fi00);
??fread(&buf1bmfh.bfOffBitsfi);//1是因為此處圖像為8bits的,所以size是1字節(jié)
??fwrite(&buf1bmfh.bfOffBitsfo);
??fseek(fibmfh.bfOffBits0);//將指針定位到圖像數(shù)據(jù)處,偏移量為bmfh.bfOffBits
??for(j=0;j ??{
???fread(&p11fi);
???p?=?(p>>(i+1))<<(i+1);//將后最低i+1層寫為0
???fwrite(&p11fo);
??}
??
??while(fread(&p11fi))
???fwrite(&p11fo);
??
??fclose(fo);
??
??printf(“替換%d后的結(jié)果回車繼續(xù)。\n“i);
??getchar();
?}
?fclose(fi);?
?getchar();
}?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-11-04?11:46??JPEGtoGarytoBIN_c代碼\
?????目錄???????????0??2017-10-24?23:05??JPEGtoGarytoBIN_c代碼\bmptoBIN\
?????文件????????2726??2017-10-10?01:29??JPEGtoGarytoBIN_c代碼\bmptoBIN\bmp?(2).c
?????文件????????2726??2017-10-10?01:29??JPEGtoGarytoBIN_c代碼\bmptoBIN\bmp.c
?????文件??????133584??2017-10-10?01:29??JPEGtoGarytoBIN_c代碼\bmptoBIN\bmp.exe
?????文件??????493554??2017-10-10?10:25??JPEGtoGarytoBIN_c代碼\bmptoBIN\bupt_out.bmp
?????文件??????493554??2017-10-10?00:44??JPEGtoGarytoBIN_c代碼\bmptoBIN\test.bmp
?????文件????????2781??2017-10-10?01:25??JPEGtoGarytoBIN_c代碼\bmptoBIN\用C語言進行BMP圖像二值化-顯示其長寬-最好有解釋.txt
?????目錄???????????0??2017-10-24?23:05??JPEGtoGarytoBIN_c代碼\jpegTobmp\
?????文件?????????758??1998-04-23?14:04??JPEGtoGarytoBIN_c代碼\jpegTobmp\JPEG.H
?????文件????????1214??2017-10-10?16:25??JPEGtoGarytoBIN_c代碼\jpegTobmp\Makefile.win
?????文件??????921654??2017-10-10?16:25??JPEGtoGarytoBIN_c代碼\jpegTobmp\RGB.bmp
?????文件???????23059??2017-10-10?16:25??JPEGtoGarytoBIN_c代碼\jpegTobmp\jpeg2bmp.c
?????文件???????25438??2017-10-10?16:25??JPEGtoGarytoBIN_c代碼\jpegTobmp\jpeg2bmp.o
?????文件?????????196??2017-10-10?16:23??JPEGtoGarytoBIN_c代碼\jpegTobmp\main.c
?????文件????????1137??2017-10-10?16:23??JPEGtoGarytoBIN_c代碼\jpegTobmp\main.o
?????文件???????92599??2017-10-10?16:22??JPEGtoGarytoBIN_c代碼\jpegTobmp\test.jpg
?????文件????????1459??2017-10-10?15:54??JPEGtoGarytoBIN_c代碼\jpegTobmp\tobmp.dev
?????文件??????151580??2017-10-10?16:25??JPEGtoGarytoBIN_c代碼\jpegTobmp\tobmp.exe
?????文件?????????414??2017-10-10?18:37??JPEGtoGarytoBIN_c代碼\jpegTobmp\tobmp.layout
?????目錄???????????0??2017-10-24?23:05??JPEGtoGarytoBIN_c代碼\jpegTobmp\新建文件夾\
?????文件????????2367??2017-10-10?00:54??JPEGtoGarytoBIN_c代碼\jpegTobmp\新建文件夾\binary.c
?????文件????????1341??2017-10-10?00:54??JPEGtoGarytoBIN_c代碼\jpegTobmp\新建文件夾\binary.o
?????文件???????15217??2017-10-10?00:11??JPEGtoGarytoBIN_c代碼\jpegTobmp\新建文件夾\test.jpg
?????文件????????4474??2017-10-10?00:56??JPEGtoGarytoBIN_c代碼\jpegTobmp\新建文件夾\tobinary.c
?????文件????????3084??2017-10-10?00:53??JPEGtoGarytoBIN_c代碼\jpegTobmp\新建文件夾\tobinary.o
?????文件??????????86??2017-10-10?00:32??JPEGtoGarytoBIN_c代碼\jpegTobmp\說明.txt
?????目錄???????????0??2017-10-24?23:05??JPEGtoGarytoBIN_c代碼\toBIN\
?????文件??????165578??2017-10-10?22:40??JPEGtoGarytoBIN_c代碼\toBIN\1.bmp
?????文件????????3651??2017-10-10?10:36??JPEGtoGarytoBIN_c代碼\toBIN\bin.c
?????文件??????135137??2017-10-10?01:45??JPEGtoGarytoBIN_c代碼\toBIN\bin.exe
............此處省略39個文件信息
評論
共有 條評論