用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;
}
?
?
?
總結
以上是生活随笔為你收集整理的用c语言读取固定大小的raw格式图像并统计灰度值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: eCognition易康导出分割结果
- 下一篇: c语言平滑raw图像(取平均值法)