-
大小: 1KB文件類型: .rar金幣: 2下載: 1 次發(fā)布日期: 2021-06-28
- 語言: C/C++
- 標(biāo)簽:
資源簡介
C語言,簡單的實(shí)現(xiàn)灰度直方圖的統(tǒng)計(jì)。對讀取的數(shù)字圖像進(jìn)行灰度直方圖統(tǒng)計(jì),獲得該圖像的灰度直方圖。以文本方式顯示統(tǒng)計(jì)得到的灰度直方圖。

代碼片段和文件信息
#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(“像素位數(shù):%d\n“InfoHeader.biBitCount);
//讀調(diào)色板
if(InfoHeader.biBitCount==8)//因?yàn)槌?4bit的圖片都有調(diào)色板
{
fread((char?*)Rgb1sizeof(RGBQUAD)*256fp);
}
????//為數(shù)據(jù)分配空間
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);
//寫調(diào)色板
if(InfoHeader.biBitCount==8)//因?yàn)槌?4bit的圖片都有調(diào)色板
{
fwrite((char?*)Rgb1sizeof(RGBQUAD)*256fp);
}
//寫圖片數(shù)據(jù)
fwrite((char*)pImg1ImgSizefp);
fclose(fp);
return?0;
}
void?ReverseGraylevel()
{
//反轉(zhuǎn)處理
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轉(zhuǎn)換到Hist
Hist[pImg[i]]++;
}
}
void?main()
{
????//菜單程序部分
int?a=0;
printf(“請選擇您所需操作。\n?請輸入以下項(xiàng)目標(biāo)號(hào)實(shí)現(xiàn)相關(guān)操作。\n1、圖像反轉(zhuǎn)\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);
}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????????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
評論
共有 條評論