Вопрос

Я понимаю, что RGB - значение (0-255) красного, (0-255) зеленого, (0-255) синего для формирования цвета.

Что именно представляет собой цветовое пространство BGR?

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

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

Решение

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

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

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

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

Другие советы

Речь идет о порядковый номер.

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

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

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

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

Речь идет о том, как цветовые компоненты располагаются в памяти.Для BGR порядок равен BGRBGRBGRBGRBGR ..., а для RGB порядок равен RGBRGBRGB...Для BGR, порядка по умолчанию для OpenCV, это выглядит следующим образом:

enter image description here (Смотрите документацию OpenCV для Как матрица изображений хранится в памяти?)

Обратите внимание, что в других ответах упоминались определенные цвета, имеющие наименьшее или наибольшее значение, но на самом деле это зависит от порядкового номера вашей машины.И порядок упаковки компонентов в unsigned int, например, на самом деле зависит от вашего программного обеспечения или библиотеки, которую вы используете.Однако, независимо от вашей библиотеки или порядковых номеров вашего компьютера, для пикселя BGR байтовый адрес цветового компонента B будет на единицу меньше, чем для G и, и на две меньше, чем для R (а для RGB все как раз наоборот).

Это просто 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).

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