上个学期,用openCV做了一个OCR的课程设计,主要就是对图片验证码进行识别。最近新开学闲来无事,想想还是整理一下比较好,不过毕竟过了一个寒假,有些东西可能记得不是太清,如果有错误还望多多包涵。首先还是用具体的bmp格式来介绍一下图片的基本知识。
在计算机图形学里,位图就是一个像素的矩阵,矩阵中的每一个点都是各种颜色的点,最后总体上来看就是一副图像。如何显示每一个像素的具体颜色,有很多种颜色空间,最常见的就是RGB,每一个像素含有三个分量——R,G,B,分别代表红、绿和蓝三种颜色,三个分量的值的具体的大小就代表三种颜色的深浅,而最终该像素显示出来的颜色就是这三种颜色混合而成的。
BMP图片种每个像素的颜色就是以位图的形式储存的,bmp文件主要是由三部分组成,最开始是文件头,54个字节固定大小,包含了图片的最基本信息,包括图片的分辨率、数据位长度等信息;第二部分是调色板,如果位图长度位24位那么就不需要调色板;文件的最后也是位图文件的关键部分就是每一个像素的颜色数据。
所有的BMP位图文件的文件头的格式都是一样的,54个字节,分别为文件头(14个字节)和信息头(40个字节),文件头被封装在BITMAPFILEHEADER数据结构中,信息头则封装在BITMAPINFOHEADER中。
文件头顾名思义,保存在文件的最开始,BMP文件载入内存后最前面的54个字节就是文件头了,文件头存储着该BMP文件的重要信息,具体的数据结构在下面给出: