Что такое точно цветовое пространство BGR?

Цвет RGB состоит из трех компонентов: Красный (0-255), Green (0-255) и Синий (0-255).

Что такое точно цветовое пространство BGR? Как это отличается от цветового пространства RGB?

36
задан nbro 21 September 2019 в 17:56
поделиться

3 ответа

RGB поддерживает Красного Синего Green. Чаще всего цвет RGB хранится в структуре или целом числе без знака с Синим занятием младшей значащей "области" (байт в 32-разрядных и 24-разрядных форматах), Green второй самый маленький, и Красный третий самый маленький.

BGR является тем же, кроме порядка областей инвертируется. Красный занимает младшую значащую область, Green второе (все еще), и Синий третье.

На некоторых платформах (например, Gamegear) модель BGR используется. Однако для большинства, как Ваш компьютер, RGB используется [необходима цитата] (хотя BGR поддерживается многими графический API для совместимости). Я не уверен , почему точно это используется; вероятно, исторический.

Пример: #FF0000 является чистым красным, когда считано как шестнадцатеричным цветом RGB (#rrggbb), потому что третья область (числа читаются справа налево!) FF (максимальное значение, насыщенный цвет), и другие две области 00 (минимальное значение, никакой цвет). Если бы #FF0000 были считаны как шестнадцатеричный цвет BGR, это был бы чистый синий.

23
ответ дан nbro 27 November 2019 в 05:48
поделиться

[Приблизительно 110] порядок байтов .

RGB является порядком байтов. Но преднамеренный выбор реализации большинства библиотек Graphics ванили состоит в том, что они рассматривают цвета как неподписанные 32-разрядные целые числа внутренне с тремя (или четыре, поскольку альфа обычно включается), компоненты, упакованные в целое число.

На машине с прямым порядком байтов (такой как x86) целое число 0x01020304 будет на самом деле сохранено в памяти как 0x04030201. И таким образом 0x00BBGGRR будет сохранен как 0xRRGGBB00!

, Таким образом, термин BGR (и BGRA и т.д.) является текучей абстракцией, где графическая библиотека объясняет, как целое число логически заказано, чтобы сделать Ваш код, который непосредственно получает доступ к компонентам цвета, индивидуально более читаемым.

Помнят, что к битовым массивам обычно получает доступ больше частей аппаратных средств, чем Ваш процессор, и порядок байтов, который определяется, скажем, стандартными адаптерами дисплея, является не обязательно тем же как порядком байтов Вашего ЦП. На уровне управления каналами в пикселе его без проблем для ЦП для извлечения полей вообще их порядок; просто программист, понимающий вещь маркировки.

38
ответ дан Will 27 November 2019 в 05:48
поделиться

Это - просто RGB в более плотно управляемом порядке, независимом от порядка байтов. Преобразование между ними просто, как только Вы знаете порядок байтов своей среды.

BGR является 24-разрядным представлением, где ниже обращенные 8 битов являются синими, затем обращенные 8 являются зелеными и выше обращены 8, являются красными.

значения RGB имеют тенденцию быть записанными как RGB (r, g, b), где значения r/g/b между 0 и 255 содержащих или как #rrggbb, где rr/gg/bb являются 8-разрядными шестнадцатеричными значениями. Все значения BGR, которые я видел, имеют тенденцию быть простыми целыми числами между 0 и 16777215 (0xffffff).

2
ответ дан paxdiablo 27 November 2019 в 05:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: