关于bmp图像转灰度图求助!!
想把bmp图像转成灰度,去掉bmp格式的那些头文件等信息,只保留灰度值,存成一个数组,下面程序有错,请各位帮我看看怎么改,谢谢!#include <stdio.h>
#include <windows.h>
int main()
{
BITMAPFILEHEADER bmpfileheader; //文件头
BITMAPINFOHEADER bmpinfoheader; //信息头
BYTE *matrix1; //象素矩阵
FILE *fp; //读取操作流
FILE *store; //读出操作流
fp=fopen("gg.bmp","r+b");
if (fp == NULL)
printf("Open failed\n");
else
printf("Open Successsfully\n");
fread(&bmpfileheader,sizeof(BITMAPFILEHEADER),1,fp);//读取文件头
fread(&bmpinfoheader,sizeof(BITMAPINFOHEADER),1,fp);//读取信息头
if (bmpinfoheader.biBitCount != 24)
printf("The error picture!");
else
printf("The correct picture!");
//以上无误
//这里开始报错
matrix1 = new BYTE[bmpinfoheader.biSizeImage];
memset(matrix1,0,bmpinfoheader.biSizeImage);
fread(matrix1,1,bmpinfoheader.biSizeImage,fp);//读取象素矩阵
fclose(fp);
unsigned long k;
for(k=0;k<bmpinfoheader.biSizeImage;k=k+3)
{
*(matrix1+k)=*(matrix1+k+1)=*(matrix1+k+2)=(*(matrix1+k)+*(matrix1+k+1)+*(matrix1+k+2))/3;
}
//创建新的灰度图
store=fopen("test.bmp","w+b");
fwrite(&bmpfileheader,sizeof(BITMAPFILEHEADER),1,store);
fwrite(&bmpinfoheader,sizeof(BITMAPINFOHEADER),1,store);
fwrite(matrix1,1,bmpinfoheader.biSizeImage,store);
fclose(store);
int a;
scanf("%d",&a);
return 0;
}
[ 本帖最后由 eurosky 于 2010-6-6 09:30 编辑 ]