1

我正在尝试使用 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怎么知道如何在不改变像素或颜色或任何东西的情况下显示此图像?

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

提前致谢!

4

1 回答 1

6

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

你的形象是

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

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

于 2011-09-08T14:38:52.347 回答