资源简介
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下用队列缓存数据
- 下一篇:算法分析与设计实验报告贪心法,动态规划法
评论
共有 条评论