怎么将txt转成bmp位图_七、位图的读入方法

92b029a9da056554aca22ec2d1c39ea9.png

在讲解图像识别技术之前,我需要讲一下,如何读入一张位图(Bitmap,即bmp格式的图片文件)。


BMP编码格式

用记事本打开bmp格式文件,映入眼帘的是一行行乱码……

事实上,如果我们将每一个字符对应ASCII,我们就会发现bmp的编码格式。

首先是一个28个字节的图像文件头,这个文件头包括:

1.前两字节是文件标识:一定是BM,代表bmp格式文件。

2.接下来四个字节是文件大小:不过要知道DWORD的存储方法,整数6存储起来就是06 00 00 00,整数257存储起来就是01 01 00 00,整数2147483647存储起来就是ff ff ff 7f。

3.接下来四个字节是保留字符:这个DWORD的值为0。

4.接下来四个字节是偏移量:一个DWORD,表示图片信息距离开头有多少个字节,利于随机读取。

5.接下来四个字节是图像信息头的长度:又是一个DWORD,表示图像信息头的长度。信息头和文件头一样,记录着图像的另一组信息。这个值在windows系统下往往是40。

6.接下来四个字节是图像的宽度,单位是像素:这个不用解释了,一个DWORD代表图像宽度。

7.接下来四个字节是图像的高度,单位是像素:这个也不需要解释了,一个DWORD代表图像高度。

8.接下来两个字节是图像的面数,这个值恒为1:这个WORD就是文件头的最后两个字节,这个值恒为01 00。

然后是图像的信息头,这个信息头包括:

1.两个字节代表图片像素位数:这个WORD一般只有6种情况:1表示单色位图,4表示16色位图,8表示256色位图,16表示16位高彩色位图,24表示24为真彩色位图(也是最常见的情况),32表示32位增强真彩色位图。

2.四个字节表示压缩种类:这个DWORD通常只有四种情况:0表示不压缩(最常见),1表示8位RLE压缩,2表示4位RLE压缩,3表示位域存放压缩。

3.四个字节代表位图数据大小:这个DWORD一定是4的倍数。

4.四个字节代表水平分辨率,单位是像素/米:这个DWORD通常是3780。

5.四个字节代表垂直分辨率,单位是像素/米:这个DWORD通常也是3780。

6.四个字节表示位图用到的颜色数:往往是0(默认值)或者2^颜色位数。

7.四个字节代表重要的颜色数:往往是0或者和上面这个DWORD相等。

8.调色板:对于调色板中的每一项,用四个字节描述RGB:蓝、绿、红、最后一个字节保留为0。

最后就是图像的数据,这些数据可以是实际RGB值,也可以是在调色板中的编号。

Bitmap24_Reader的C++实现

为了方便以后图像识别,我们需要实现Bitmap24_Reader类,来读入24位真彩色位图的信息。代码如下:

#include 

这样我们就可以用以下两种方法读取1.bmp中(x, y)处的RGB:

unsigned 

推荐使用第二种方法,方便随时打开文件,同时节省内存(不用了就delete掉)。


关于24位真彩色位图的读入方法也讲完了,第九篇就将是如何用全连接网络实现图像识别。

感谢您的阅读。限于笔者水平,文章定有疏漏。如有不足,敬请斧正!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值