100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 用c语言读取固定大小的raw格式图像并统计灰度值

用c语言读取固定大小的raw格式图像并统计灰度值

时间:2021-01-25 17:41:48

相关推荐

用c语言读取固定大小的raw格式图像并统计灰度值

目的:

1.读取【256*256】大小的raw格式图像

2.统计灰度值

3.将结果写回result.txt

代码:

方法一

#include<stdio.h>

#include<stdlib.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;j<256;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文件

}

方法二:

#include<stdio.h>

#include<stdlib.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;j<256;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;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。