当前位置:首页 > 代码 > 正文

获取某张图片的灰度值的完整代码(读取灰度图像)

admin 发布:2022-12-19 19:21 123


本篇文章给大家谈谈获取某张图片的灰度值的完整代码,以及读取灰度图像对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

如何用C语言程序从bmp格式的图片中读取图片的灰度值

1、首先要了解bmp位图的格式,搜索些技术支持文档,bmp位图基本上是分4大部分,文件信息结果部分,文件头信息结果部分,调色板结果部分,后面就是数据实体部分。及其每个部分对应有用的信息。比如长宽。当然长宽信息你自己可以从window系统下看得到。打开bmp文件,把前面三部分的字节总数给固定下来,逐个字符读取,然后读取数据实体部分,输出就可以了。

2、例程:

#include stdio.h

#include stdlib.h

#pragma pack(2)

/*定义WORD为两个字节的类型*/

typedef unsigned short WORD;

/*定义DWORD为e四个字节的类型*/

typedef unsigned long DWORD;

/*位图文件头*/

typedef struct BMP_FILE_HEADER

{

WORD bType; /* 文件标识符 */

DWORD bSize; /* 文件的大小 */

WORD bReserved1; /* 保留值,必须设置为0 */

WORD bReserved2; /* 保留值,必须设置为0 */

DWORD bOffset; /* 文件头的最后到图像数据位开始的偏移量 */

} BMPFILEHEADER;

/*位图信息头*/

typedef struct BMP_INFO

{

DWORD bInfoSize; /* 信息头的大小 */

DWORD bWidth; /* 图像的宽度 */

DWORD bHeight; /* 图像的高度 */

WORD bPlanes; /* 图像的位面数 */

WORD bBitCount; /* 每个像素的位数 */

DWORD bCompression; /* 压缩类型 */

DWORD bmpImageSize; /* 图像的大小,以字节为单位 */

DWORD bXPelsPerMeter; /* 水平分辨率 */

DWORD bYPelsPerMeter; /* 垂直分辨率 */

DWORD bClrUsed; /* 使用的色彩数 */

DWORD bClrImportant; /* 重要的颜色数 */

} BMPINF;

/*彩色表*/

typedef struct RGB_QUAD

{

WORD rgbBlue; /* 蓝色强度 */

WORD rgbGreen; /* 绿色强度 */

WORD rgbRed; /* 红色强度 */

WORD rgbReversed; /* 保留值 */

} RGBQUAD;

int main()

{

FILE *fp;

BMPFILEHEADER fileHeader;

BMPINF infoHeader;

long offset, bmpImageSize, width, height, bytesPerPixel, size, bitCount;

// int i, j;

// unsigned char **p;

WORD c;

if((fp = fopen("5.bmp", "rb")) == NULL)

{

printf("Cann't open the file!\n");

exit(0);

}

fseek(fp, 0, 0);

fread(fileHeader, sizeof(fileHeader), 1, fp);

fread(infoHeader, sizeof(infoHeader), 1, fp);

//计算并输出位图数据的偏移量,图像的大小,宽度和高度,每个像素点所占的字节

size = fileHeader.bSize;

offset = fileHeader.bOffset;

bmpImageSize = infoHeader.bmpImageSize;

width = infoHeader.bWidth;

height = infoHeader.bHeight;

bitCount = infoHeader.bBitCount;

bytesPerPixel = infoHeader.bBitCount / 8;

printf("%d %d %d %d %d %d\n", size, offset, bmpImageSize, width, height, bitCount, bytesPerPixel);

//输出每个像素点所占字节中的内容

c = fgetc(fp);

while (!feof(fp))

{

printf("%x ", c);

c = fgetc(fp);

}

printf("\n");

fclose(fp);

return 0;

}

如何用C语言程序从bmp格式的图片中读取图片的灰度值?

方法一:

#includestdio.h

#includestdlib.h

void main()

{

int i,j;

FILE *fp;  //指向文件的指针

fp=fopen("Lena.raw","rb");  //打开文件。注意raw格式图像要以只读二进制流的形式打开

if(!fp)

{

printf("ERROR!\n");

}

unsigned char *pData=new unsigned char[256*256]; //注意:raw图像用无符号char型读入

fread(pData,sizeof(unsigned char),(256*256),fp);  //fread具体用法见msdn

fclose(fp); //取消fp指针指向

int value[256]={0}; //声明并初始化存灰度值的数组

for(i=0;i(256*256);i++) //统计灰度值

{

value[pData[i]]++;

}

printf("灰度值\t\t大小"); //

printf("\n");

fp=fopen("result.txt","wb");

fprintf(fp,"灰度值\t\t大小\r\n");//注意\r\n 否则不能换行!

for(j=0;j256;j++)  //将结果输出到txt中

{

  printf("%d\t\t%d\n",j,value[j]);

// fwrite(value,sizeof(int),256,fp);

 fprintf(fp,"%d\t\t%d\r\n",j,value[j]);  //注意\r\n 否则不能换行

}

delete[] pData;//删除空间

fclose(fp); //关闭txt文件

}

方法二:

#includestdio.h

#includestdlib.h

int value[256]={0};

int fread(unsigned char *pData)  //把声明的那个数组空间指针作为参数来回传

{

FILE *fp;

fp=fopen("Lena.raw","rb");

if(!fp)

{

printf("Read ERROR!\n");

}

fread(pData,sizeof(unsigned char),(256*256),fp);

fclose(fp);

return 0; //

}

int fchuli(unsigned char *pData)

{

  for(int i=0;i(256*256);i++) //统计灰度值

{

  value[pData[i]]++;

}

return 0; //

}

int fwrite(unsigned char *pData)

{

FILE *fp;

fp=fopen("result.txt","wb");

fprintf(fp,"灰度值\t\t大小\r\n");

for(int j=0;j256;j++) //将结果输出到txt中

{

  printf("%d\t\t%d\n",j,value[j]);

// fwrite(value,sizeof(int),256,fp);

 fprintf(fp,"%d\t\t%d\r\n",j,value[j]);

}

delete[] pData;//删除空间

fclose(fp); //关闭txt文件

return value[256]; //

}

int main(unsigned char *pData)

{

pData=new unsigned char[256*256];  //在主函数里声明新空间

fread(pData); //传数组地址

fchuli(pData);

fwrite(pData);

return 0;

}

求救matlab高手:如何获取图片的灰度值

用imread("")把图片读进来,再转换成grey模式(灰度模式),得到的就是一个灰度矩阵,要获取某个点的灰度值就和数字矩阵中获得某个点的数的方法是一样的;例如:

i=imread('tuxiang.jpg');%i是彩色图像

i1=rgb2gray(i);%i1就是灰度图像

i1(x,y)%就是(x,y)点的灰度值

i1(x1:x2,y1:y2)%就是图像一部分的灰度矩阵

获取某张图片的灰度值的完整代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于读取灰度图像、获取某张图片的灰度值的完整代码的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/20116.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载