如何用c语言实现彩色图像的灰度化

如何用c语言实现彩色图像的灰度化,第1张

用c是比较麻烦的

需要图形接口。

可以用vc/vs的自带图形烂滑库

也可嫌悉以用tc2.0的graphic接口。

或者使用第三方库。

初始化图形接口后

在屏幕上打随机的彩色点,芹历乎实现下降效果即可。

方法一:

#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=0i<(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=0j<256j++)  //将结果输出到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=0i<(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=0j<256j++) //将结果输出到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

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12382024.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存