Question

Je comprends rgb --- (0-255) Rouge, (0-255) Vert, (0-255) Bleu pour former une couleur.

Quel est exactement l'espace couleur BGR?

Comment est-il différent de l'espace couleur RGB?

Était-ce utile?

La solution

RVB signifie Rouge Vert Bleu. Le plus souvent, une couleur RVB est stocké dans une structure ou un entier non signé avec Blue occupant le moins « zone » significative (un octet en 32 bits et formats 24 bits), Vert le deuxième moins, et rouge la troisième moins.

BGR est le même, à l'exception de l'ordre des zones est inversée. Rouge occupe la zone la moins importante, vert, la deuxième (encore), et le troisième bleu.

BGR un modèle est utilisé sur certaines plates-formes (par exemple le Gamegear ). Cependant, pour la plupart, comme votre ordinateur, RVB est utilisé [la citation nécessaire-] (bien que BGR est pris en charge par de nombreuses API graphiques est pour la compatibilité). Je ne sais pas pourquoi exactement il est utilisé; probablement historique.

Exemple: (! Chiffres sont lus de droite à gauche) # FF0000 est rouge pur lue comme une couleur hexadécimal RVB (#rrggbb), parce que la troisième zone est FF (valeur maximale, couleur) et les deux autres sont 00 (valeur minimale, pas de couleur). Si # FF0000 ont été lus comme une couleur hexadécimal BGR, ce serait bleu pur.

Autres conseils

Son sujet de boutisme .

RGB est un octet d'ordre. Mais le choix de la mise en œuvre délibérée de la plupart des bibliothèques graphiques de vanille est qu'ils traitent des couleurs comme non signés entiers de 32 bits en interne, avec les trois composantes (ou quatre, comme alpha est généralement inclus) emballés dans l'entier.

Sur une machine little-endian (par exemple x86) le 0x01020304 entier sera effectivement stocké dans la mémoire comme 0x04030201. Et ainsi 0x00BBGGRR sera stocké sous forme 0xRRGGBB00!

Ainsi, le terme BGR (et BGRA etc) est une abstraction qui fuit où la bibliothèque graphique est d'expliquer comment l'entier est logiquement ordonné, de manière à rendre votre code qui accède directement les composantes de couleur individuellement plus lisible.

Rappelez-vous que les bitmaps sont généralement accessibles en plusieurs parties du matériel que votre processeur et le endian spécifié par, par exemple, les cartes graphiques classiques, ne sont pas nécessairement les mêmes que la endian de votre CPU. Au niveau de la manipulation des canaux dans le pixel son pas de problème pour une unité centrale de traitement pour extraire les champs quel que soit leur ordre; son purement programmeur comprendre la chose d'étiquetage.

Il est sur la façon dont les composants de couleur sont disposés en mémoire. Pour BGR l'ordre est BGRBGRBGRBGR ... et pour RGB l'ordre est RGBRGBRGB ... Pour BGR, l'ordre par défaut pour OpenCV, il est comme ceci:

entrer dans la description d'image ici (Consultez la documentation de OpenCV pour Comment la matrice d'image est stockée dans la mémoire? )

Notez les autres réponses ont fait référence à certaines couleurs étant moins ou plus d'importance, mais cela dépend en fait le boutisme de votre machine. Et l'ordre d'emballage des composants dans un unsigned int, par exemple, dépend en fait de votre logiciel, ou la bibliothèque que vous utilisez. Cependant, quelle que soit votre bibliothèque, ou les ENDIANNESS de votre machine, pour le pixel BGR l'adresse d'octet de la composante de couleur B sera un de moins que G et et deux de moins que R (et pour RGB il est juste l'inverse ).

Il est juste RGB dans un ordre plus étroitement contrôlé, indépendamment de boutisme. La conversion entre eux est simple une fois que vous connaissez le boutisme de votre environnement.

Le BGR est une représentation à 24 bits lorsque la plus faible, adressée 8 bits sont bleues, la prochaine adressée 8 sont verts et supérieur à adressage 8 sont rouges.

valeurs RVB ont tendance à être écrite comme RGB (r, g, b) où les valeurs R / G / B sont compris entre 0 et 255 inclus, soit comme #rrggbb, où rr / gg / bb sont les valeurs hexadécimales de 8 bits. Toutes les valeurs BGR que j'ai vu ont tendance à être des nombres entiers simples entre et 0 16777215 (0xffffff).

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