Question

Je suis en train d'analyser les plaques d'immatriculation avec le code C. Le point est comment arriver rapidement, parce que je veux aller au processus de moi-même la création de ce code C ++ et d'apprendre à.

Problème:

Les octets du fichier bitmap ne correspond pas! Le fichier bitmap: entrer dans la description d'image ici http://ictmdeklerk.nl/cor.bmp

Pourquoi ils n'ajoutent:

J'utilise 24 images bitmap bits (fichiers * .bmp). Je sais que le bitmap est construit avec le BMPFILEHEADER, et BMPINFOHEADER, qui consomment togehter 54 octets.

Maintenant, l'image est de 1350 pixels de large et 740 pixels de hauteur, ce qui résulte en 999000 pixels.

Parce que le fichier est en 24 bits, il y a 3 octets par pixel. 999000 * 3 = 2997000 octets pour l'image neccessary. Mais la taille de l'image (biSizeImage) dans le BMPINFOHEADER dit l'image est 2998480 octets! La taille du fichier est 2.998.534 octets - 54 octets d'en-tête = 2.998.480 en effet. Donc, l'en-tête est encore 54 octets. Aucune donnée supplémentaire méta là. Quand je divise 2.998.480 / 3 octets par pixel je reçois 999493,33 pixels! Il est même pas un chiffre rond!

Il me rend fou. Comment ne fenêtres savent jamais comment afficher cette image sans changer de pixels ou de couleurs ou quoi que ce soit?

Quelqu'un peut-il me expliquer où ces pixels supplémentaires / octets viennent? Et comment les traiter?

Merci à l'avance!

Était-ce utile?

La solution

BMP fichiers pad chaque ligne aux limites de 4 octets.

Votre image est

(1350px de largeur) x (3 octets par pixel) = 4050 octets par ligne. 4050 est divisible par 4, mais 4052 pour 2 octets pour chaque ligne (2 * 740 = 1480 octets) sont ajoutés comme rembourrage à votre image.

La taille du fichier est donc l'image 2997000 octets + 54 octets en-tête + 1480 octets rangée rembourrage = 2998534 octets, ce qui est la taille de fichier actuelle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top