Вопрос

Я пытаюсь проанализировать номерные знаки с кодом C ++. Дело не в том, как попасть туда быстро, потому что я хочу перейти к процессу создания этого кода C ++ и научиться.

Проблема:

Байты в растровом файле не складываются! Файл растрового изображения:enter image description here http://ictmdeklerk.nl/cor.bmp

Почему они не складываются:

Я использую 24 -битные растровые изображения (*.bmp files). Я знаю, что растровая карта построена с BMPFileHeader и BmpinfoHeader, который Togehter потребляет 54 байта.

Теперь изображение имеет ширину 1350 пикселей и высотой 740 пикселей, что приводит к 999000 пикселей.

Поскольку файл составляет 24 бит, есть 3 байта на пиксель. 999000 * 3 = 2997000 байт, необходимые для изображения. Но размер изображения (BisizeImage) в BmpinfoHeader говорит, что изображение составляет 2998480 байтов! Размер файла составляет 2,998,534 байта - 54 байта заголовка = 2,998,480 действительно. Таким образом, заголовок все еще 54 байта. Там нет дополнительных метаданных. Когда я разделяю 2,998,480 / 3 байт на пиксель, я получаю 999493,33 пикселей! Это даже не круглый номер!

Это сводит меня с ума. Как Windows когда -нибудь знает, как показать это изображение без переключения пикселей, цветов или чего -то еще?

Кто -нибудь может объяснить мне, откуда берутся эти дополнительные пиксели/байты? И как с ними справиться?

Заранее спасибо!

Это было полезно?

Решение

Файлы BMP прокладывают каждую строку до 4-байтовых границ.

Ваше изображение есть

(Ширина 1350px) x (3 байта на пиксель) = 4050 байтов на строку. 4050 не делится на 4, а 4052 является Таким образом, 2 байта для каждой строки (2 * 740 = 1480 байтов) добавляются в качестве накладки к вашему изображению.

Таким образом, размер файла составляет 2997000 байтов изображения + 54 байта заголовка + 1480 байт строки = 2998534 байт, что является фактическим размером файла.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top