位图不正确; 这怎么可能

1 bitmap filesize pixels image-size

我试图用C++代码分析车牌.重点不是如何快速实现目标,因为我想自己去创建这个C++代码并学习如何实现.

问题:

位图文件中的字节不加起来!位图文件: 在此输入图像描述 http://ictmdeklerk.nl/cor.bmp

为什么他们不加起来:

我正在使用24位位图图像(*.BMP文件).我知道位图是用BMPFILEHEADER和BMPINFOHEADER构建的,它占用了54个字节.

现在,图像宽1350像素,高740像素,产生999000像素.

因为文件是24位,所以每个像素有3个字节.图像需要999000*3 = 2997000字节.但是BMPINFOHEADER中的图像大小(biSizeImage)表示图像是2998480字节!文件大小为2.998.534字节 - 确实54个头字节= 2.998.480.所以标题仍然是54个字节.那里没有额外的元数据.当我每像素除2.998.480/3字节时,得到999493,33像素!它甚至不是一个圆形的数字!

这让我疯了.Windows如何知道如何在不移动像素或颜色或任何东西的情况下显示此图像?

谁能解释一下这些额外的像素/字节来自哪里?以及如何处理它们?

提前致谢!

Cha*_*rns 5

BMP文件将每行填充到4字节边界.

你的形象是

(1350px宽)x(每像素3个字节)=每行4050个字节.4050不能被4整除,但4052 每行2个字节(2*740 = 1480字节)被添加为图像的填充.

因此,文件大小为2997000图像字节+ 54字节标头+ 1480字节行填充= 2998534字节,这是实际文件大小.