下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第C语言实现BMP格式图片转化为灰度FILE*fp1=fopen("C:\\Users\\Administrator\\Desktop\\data\\bmp\\image.bmp","rb+");
if(fp1==NULL)
printf("打开文件fp1失败");
exit(0);
FILE*fp2=fopen("C:\\Users\\Administrator\\Desktop\\data\\bmp\\imageGray.bmp","wb");
if(fp1==NULL)
printf("打开文件fp2失败");
exit(0);
fileHeader*fh;
fileInfo*fi;
fh=(fileHeader*)malloc(sizeof(fileHeader));
fi=(fileInfo*)malloc(sizeof(fileInfo));
//读取位图头结构和信息头
fread(fh,sizeof(fileHeader),1,fp1);
fread(fi,sizeof(fileInfo),1,fp1);
printf("\\\\\\\\\\\\\\\\\\\\原始图片信息\\\\\\\\\\\\\\\\\\\\\\\\\\\n");
printf("bmp文件头:\n");
printf("bfSize:%d\n",fh-bfSize);
printf("bfOffBits:%d\n",fh-bfOffBits);
printf("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n");
printf("bmp信息头\n");
printf("结构体长度:%d\n",fi-biSize);
printf("位图宽度:%d\n",fi-biWidth);
printf("位图高度:%d\n",fi-biHeight);
printf("位图平面数:%d\n",fi-biPlanes);
printf("颜色位数:%d\n",fi-biBitCount);
printf("压缩方式:%d\n",fi-biCompression);
printf("实际位图数据占用的字节数:%d\n",fi-biSizeImage);
printf("X方向分辨率:%d\n",fi-biXPixPerMeter);
printf("Y方向分辨率:%d\n",fi-biYPixPerMeter);
printf("使用的颜色数:%d\n",fi-biClrUsed);
printf("重要颜色数:%d\n",fi-biClrImporant);
printf("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n");
//修改信息头
fi-biBitCount=8;
//fi-biSizeImage=((fi-biWidth*3+3)/4)*4*fi-biHeight;
fi-biSizeImage=fi-biHeight*fi-biWidth;
//修改文件头
fh-bfOffBits=sizeof(fileHeader)+sizeof(fileInfo)+256*sizeof(rgbq);
fh-bfSize=fh-bfOffBits+fi-biSizeImage;
printf("\\\\\\\\\\\\\\\\\\\\修改后的图片信息\\\\\\\\\\\\\\\\\\\\\\\\\\\n");
printf("bmp文件头:\n");
printf("bfSize:%d\n",fh-bfSize);
printf("bfOffBits:%d\n",fh-bfOffBits);
printf("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n");
printf("bmp信息头\n");
printf("结构体长度:%d\n",fi-biSize);
printf("位图宽度:%d\n",fi-biWidth);
printf("位图高度:%d\n",fi-biHeight);
printf("位图平面数:%d\n",fi-biPlanes);
printf("颜色位数:%d\n",fi-biBitCount);
printf("压缩方式:%d\n",fi-biCompression);
printf("实际位图数据占用的字节数:%d\n",fi-biSizeImage);
printf("X方向分辨率:%d\n",fi-biXPixPerMeter);
printf("Y方向分辨率:%d\n",fi-biYPixPerMeter);
printf("使用的颜色数:%d\n",fi-biClrUsed);
printf("重要颜色数:%d\n",fi-biClrImporant);
printf("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n");
//创建调色板
inti,j,k=0;
rgbq*fq=(rgbq*)malloc(256*sizeof(rgbq));
for(i=0;ii++)
fq[i].rgbBlue=fq[i].rgbGreen=fq[i].rgbRed=i;
//写入文件头、信息头、调色板
fwrite(fh,sizeof(fileHeader),1,fp2);
fwrite(fi,sizeof(fileInfo),1,fp2);
fwrite(fq,sizeof(rgbq),256,fp2);
//将位图信息转为灰度
//存储bmp一行的像素点
//unsignedcharImgData[900][3];
unsignedcharImgData[3000][3];
//将灰度图像存到一维数组中
//unsignedchargrayData2[900];
unsignedcharImgData2[3000];
//错误的算法
for(i=0;ifi-biHeight;i++)
for(j=0;j(fi-biWidth*3+3)/4*4;j++)
for(k=0;kk++)
fread(ImgData[j][k],1,1,fp1);
for(j=0;j(fi-biWidth+3)/4*4;j++)
ImgData2[j]=int((float)ImgData[j][0]*0.114+
(float)ImgData[j][1]*0.587+
(float)ImgData[j][2]*0.299);
//将灰度图信息写入
fwrite(ImgData2,j,1,fp2);
//正确的算法(1)
for(i=0;ifi-biHeight;i++)
for(j=0;j(fi-biWidth+3)/4*4;j++)
for(k=0;kk++)
fread(ImgData[j][k],1,1,fp1);
for(j=0;j(fi-biWidth+3)/4*4;j++)
ImgData2[j]=int((float)ImgData[j][0]*0.114+
(float)ImgData[j][1]*0.587+
(float)ImgData[j][2]*0.299);
//将灰度图信息写入
fwrite(ImgData2,j,1,fp2);
//正确算法(2)
unsignedchar**bmp_data;
bmp_data=newunsignedchar*[fi-biHeight];//声明一个指针数组
unsignedchar*data288=newunsignedchar[fi-biHeight*fi-biWidth];
for(i=0;ifi-biHeight;i++)
bmp_data[i]=newunsignedchar[(fi-biWidth*3+3)/4*4];//每个数组元素也是一个指针数组
for(i=0;ifi-biHeight;i++)
for(j=0;j(fi-biWidth*3+3)/4*4;j++)
fread(bmp_data[i][j],1,1,fp1);//每次只读取一个字节,存入数组
for(i=0;ifi-biHeight;i++)//将24位真彩色转换成灰度图
for(j=0;jfi-biWidth;j++){
data288[fi-biWidth*i+j]=((unsignedchar)((float)bmp_data[i][3*j]*0.114+(float)bmp_data[i][3*j+1]*0.587+(float)bmp_data
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026汽车制造市场调研及发展技巧与投资回报预测报告
- 2026中国运动安全预警系统人工智能技术融合应用前景报告
- 2026中国涡流泵市场消费需求变化与用户行为调研报告
- 2026汽车零部件行业竞争格局调研与未来发展展望分析研究报告
- 新版教科版六年级上册科学(课件)第4单元 5机械钟摆
- 2026叶黄素酯原料产地资源分布与采购策略研究报告
- 2026中国消费品零售市场发展趋势及商业模式创新与投资前景预测研究报告
- 2026人工智能技术发展市场潜力分析探讨战略规划投资价值评估
- 2026能源监控设备行业市场应用分析评估发展策略研究
- 工业机器视觉技术与应用 课件 第五章-工业机器视觉目标检测与跟踪
- 医院门诊检验标本采集工作手册
- 西师大版小学二年级上册数学全册教学设计
- 《养老机构智慧消防管理数字化平台建设技术规范》
- 蜘蛛咬伤诊疗规范
- 2026年(煤矿)采煤班组长培训考试题库附答案
- 内蒙古荣达可再生能源发展有限公司建设25kt-a脱硫副产物硫膏、硫渣提纯工业硫磺综合利用项目水土保持报告表
- 辅助生殖控制性卵巢刺激临床应用专家共识(2026版)
- 2025版《首钢集团有限公司职工违规行为处理办法》
- 2026年深度学习及其应用-复旦大学中国大学mooc课后章节答案期末题库试题含答案详解(考试直接用)
- 近五年高考语文高频默写名句TOP50
- 工会婚恋服务工作制度
评论
0/150
提交评论