这是关于C++读取二值BMP图片像素的灰度的问题 50

参考网上的资料后我写出了读取8位(灰值)和24位的图像的值。本以为二值的bmp图片更容易读,只要一个byte,一个byte的读就行了,但是这样不能读完整。这是我读取1位深... 参考网上的资料后我写出了读取8位(灰值)和24位的图像的值。本以为二值的bmp图片更容易读,只要一个byte,一个byte的读就行了,但是这样不能读完整。
这是我读取1位深度的代码
fseek(InFile, 1076, SEEK_SET);
unsigned char buf[32];
fseek(InFile, sizeof(BITMAPFILEHEADER)+ sizeof(BITMAPINFOHEADER), SEEK_SET);
printf("***2***\n");
for (i = 0; i<depth; i++)
{
for (j = 0; j<width; j++)
{
fread(&image1[i][j], 1, 1, InFile);
//fread(buf, 1, 3, InFile);
}
}
哪里出错了。。
展开
 我来答
帐号已注销
2017-01-07 · 超过87用户采纳过TA的回答
知道小有建树答主
回答量:204
采纳率:0%
帮助的人:117万
展开全部
如果是8bit的灰度图像,总共能表示2^8共=256种颜色,此时用调色板保存颜色信息,而像素矩阵则保存调色板索引,这样更能节省空间。

其次,windows下的BMP是4字节扫描的,比如宽399的24字节真彩色图片,其真实行宽不是399x3=1197, 而是 ((int)(399x3/4)+1)x4 = 1200字节,所以每一行填充了3个全0的空字节。这些都是你要考虑的。
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式