Frage

Ich verstehe RGB --- Wert (0-255) Rot, (0-255) Grün, (0-255) Blau eine Farbe zu bilden.

Was genau ist BGR-Farbraum?

Wie unterscheidet es sich von RGB-Farbraum?

War es hilfreich?

Lösung

RGB steht für Rot Grün Blau. Meistens eine RGB-Farbe wird in einer Struktur oder unsigned integer mit Blau besetzt das am wenigsten signifikanten „Bereich“ (ein Byte in 32-Bit- und 24-Bit-Formaten), Grün die zweite dest gespeichert, und Rot ist der dritter am wenigsten.

BGR ist das gleiche, nur die Reihenfolge der Bereiche umgekehrt wird. Rot nimmt den am wenigsten signifikanten Bereich, Grün die zweite (nach wie vor), und Blau ist die dritte.

Auf einigen Plattformen (zum Beispiel des Gamegear ) ein BGR-Modell verwendet wird. Doch für die meisten, wie Ihr Computer wird RGB verwendet [citation benötigte] (obwohl BGR wird von vielen Grafik-API für Kompatibilität unterstützt). Ich bin nicht sicher, Warum genau ist es verwendet wird; wahrscheinlich historisch.

Beispiel: (! Zahlen rechts nach links gelesen werden) # FF0000 ist rein rot, wenn sie als RGB Hex Farbe (#rrggbb) lesen, da der dritte Bereich ist FF (Maximalwert, farbenreich) und die beiden anderen Bereiche sind 00 (Minimalwert, keine Farbe). Wenn # FF0000 als BGR hex Farbe gelesen wurden, wäre es rein blau sein.

Andere Tipps

Es geht um endianness .

RGB ist eine Byte-Reihenfolge. Aber eine bewusste Umsetzung Wahl der meisten Vanille-Graphics-Bibliotheken ist, dass sie Farben als unsigned 32-Bit-Integer intern behandeln, mit den drei (oder vier, als Alpha-Regel enthalten) Komponenten in die ganze Zahl verpackt.

Auf einer Little-Endian-Maschine (wie x86) das ganze Zahl 0x01020304 tatsächlich als 0x04030201 im Speicher abgelegt werden. Und so 0x00BBGGRR wird als 0xRRGGBB00 gespeichert werden!

So ist der Begriff BGR (und BGRA etc) ist eine undichte Abstraktion, wo die Grafikbibliothek wird erläutert, wie die ganze Zahl logisch geordnet wird, um den Code zu machen, die direkt auf die Farbe zugreift Komponenten individuell besser lesbar.

Beachten Sie, dass Bitmaps in der Regel durch mehrere Teile der Hardware als Prozessor zugegriffen wird, und die Endian, die von, sagen wir, herkömmlichen Anzeigeadapter angegeben wird, ist nicht unbedingt die gleiche wie die Endian Ihrer CPU. Auf der Ebene der Manipulation die Kanäle in dem Pixel ist es kein Problem für eine CPU der Felder unabhängig von ihrer Reihenfolge zu extrahieren; seine reinen Programmierer die Kennzeichnung Sache zu verstehen.

Es geht um die Art und Weise der Farbkomponenten im Speicher angelegt werden. Für BGR die Reihenfolge BGRBGRBGRBGR ist ... und für RGB ist die Reihenfolge RGBRGBRGB ... Für BGR, die Standardreihenfolge für OpenCV, ist es wie folgt aus:

eingeben Bild Beschreibung hier (Siehe die OpenCV-Dokumentation Wie die Bildmatrix in dem Speicher gespeichert ist? )

Beachten Sie die anderen Antworten haben auf bestimmte Farben bezeichnet dest oder die meisten Bedeutung zu sein, aber das hängt wirklich von der endianness Ihrer Maschine. Und die Verpackung der Reihenfolge der Komponenten in einem unsigned int, beispiel, hängt wirklich von Ihrer Software oder der Bibliothek Sie verwenden. Doch unabhängig von Ihrer Bibliothek oder der Byte-Reihenfolge Ihrer Maschine, für BGR Pixel der Byte-Adresse der B-Farbkomponente einer geringer sein wird als für G und und zwei weniger als für R (und für RGB ist es gerade umgekehrt ).

Es ist nur RGB in einer streng kontrollierten Reihenfolge, unabhängig von Endian. Konvertieren zwischen ihnen ist einfach, wenn Sie die endianness Ihrer Umgebung kennen.

Der BGR ist eine 24-Bit-Darstellung, wo die unteren 8 Bits adressiert sind blau, die nächste adressierte 8 sind grün und höher adressierten 8 sind rot.

RGB-Werte neigen dazu, als RGB (r, g, b) geschrieben werden, wo die R / G / B-Werte liegen zwischen 0 und 255 einschließlich oder als #RRGGBB, wobei rr / gg / bb sind 8-Bit-Hex-Werte. Alle BGR Werte, die ich gesehen habe, sind in der Regel einfache, ganze Zahlen zwischen 0 und 16777215 (0xffffff) sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top