資源簡介
C語言,簡單的實現灰度直方圖的統計。對讀取的數字圖像進行灰度直方圖統計,獲得該圖像的灰度直方圖。以文本方式顯示統計得到的灰度直方圖。

代碼片段和文件信息
#include?
#include?
#include?
BITMAPFILEHEADER?FileHeader;
BITMAPINFOHEADER?InfoHeader;
RGBQUAD?Rgb[256];
BYTE?*pImg?=?NULL;
int?ImgSize;
//Height=InfoHeader.biHeight;
//Width=InfoHeader.biWidth;
BOOL?read(char*?filename)
{
FILE??*?fp;
fp=fopen(filename?“rb“);
if(fp?==?NULL)
{
printf(“沒有找到該文件\n“);
return?-1;
}
//讀文件頭
fread((char?*)&FileHeader?1?sizeof(BITMAPFILEHEADER)?fp);
printf(“文件長度:%d\n“FileHeader.bfSize);
printf(“偏移量:%d\n“FileHeader.bfOffBits);
//讀信息頭
fread((char?*)&InfoHeader?1?sizeof(BITMAPINFOHEADER)?fp);
printf(“圖像寬度:%d\n“InfoHeader.biWidth);
printf(“圖像高度:%d\n“InfoHeader.biHeight);
printf(“像素位數:%d\n“InfoHeader.biBitCount);
//讀調色板
if(InfoHeader.biBitCount==8)//因為除了24bit的圖片都有調色板
{
fread((char?*)Rgb1sizeof(RGBQUAD)*256fp);
}
????//為數據分配空間
ImgSize=FileHeader.bfSize-FileHeader.bfOffBits;
if(pImg?!=?NULL)
free(pImg);
pImg=(BYTE?*)malloc(ImgSize);
fread((char*)pImg1ImgSizefp);
fclose(fp);
return?0;
}
BOOL?write(char*?filename)
{
????FILE*?fp=fopen(filename?“wb“);
if(fp?==?NULL)
{
printf(“沒有找到該文件\n“);
return?-1;
}
fwrite((char?*)&FileHeader?1?sizeof(BITMAPFILEHEADER)?fp);
fwrite((char?*)&InfoHeader?1?sizeof(BITMAPINFOHEADER)?fp);
//寫調色板
if(InfoHeader.biBitCount==8)//因為除了24bit的圖片都有調色板
{
fwrite((char?*)Rgb1sizeof(RGBQUAD)*256fp);
}
//寫圖片數據
fwrite((char*)pImg1ImgSizefp);
fclose(fp);
return?0;
}
void?ReverseGraylevel()
{
//反轉處理
for(int?i=0;i {
pImg[i]=255-pImg[i];
}
}
int?Hist[256];
void?Histogram()
{
memset(Hist?0?sizeof(Hist));
for(int?i=0;?i {
????//pImg轉換到Hist
Hist[pImg[i]]++;
}
}
void?main()
{
????//菜單程序部分
int?a=0;
printf(“請選擇您所需操作。\n?請輸入以下項目標號實現相關操作。\n1、圖像反轉\n2、灰度直方圖\n3、圖片另存為\n“);
scanf(“%d“a);
switch(a)
{
case?1:
ReverseGraylevel();
if(read(“d:\\car8b-g.bmp“)?0)
return;
break;
case?2:
Histogram();
break;
case?3:
write(“f:\\new-car.bmp“);
break;
}
if(pImg)
free(pImg);
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????535??2011-10-19?22:08??bmp_1\bmp_1.dsw
?????文件???????2291??2011-10-20?23:43??bmp_1\bpm_1.cpp
?????目錄??????????0??2011-10-20?17:20??bmp_1
-----------?---------??----------?-----??----
?????????????????2826????????????????????3
- 上一篇:MFC下用隊列緩存數據
- 下一篇:算法分析與設計實驗報告貪心法,動態規劃法
評論
共有 條評論