Pregunta

Entiendo RGB --- valor (0-255) Rojo, (0-255) Verde, (0-255) Azul para formar un color.

¿Qué es exactamente el espacio de color BGR?

¿En qué se diferencia del espacio de color RGB?

¿Fue útil?

Solución

RGB significa Rojo Verde Azul. Muy a menudo, un color RGB se almacena en una estructura o entero sin signo con Blue ocupando la "zona" menos significativo (un byte en formatos de 32 bits y 24 bits), Verde el segundo menos, y Red la tercera menos.

BGR es el mismo, excepto que el orden de las zonas se invierte. Rojo ocupa el área menos significativo, Verde el segundo (todavía), y la tercera azul.

En algunas plataformas (por ejemplo, la Gamegear ) se utiliza un modelo de BGR. Sin embargo, para la mayoría, al igual que su equipo, se utiliza RGB [cita-requerida] (aunque BGR es apoyada por muchos de gráficos API de compatibilidad). No estoy seguro de ¿Por qué es exactamente lo que está acostumbrado; Probablemente histórico.

Ejemplo: (los números se leen de derecha a izquierda) # FF0000 es puro rojo cuando lee como un color RGB hexadecimal (#rrggbb), debido a que la tercera área es FF (valor máximo, a todo color) y las otras dos áreas son 00 (valor mínimo, sin color). Si # FF0000 se leyeron como un color hexadecimal BGR, que sería azul puro.

Otros consejos

Es sobre endianness .

RGB es un orden de bytes. Pero una elección deliberada aplicación de la mayoría de las bibliotecas de gráficos de vainilla es que tratan a los colores como enteros sin signo de 32 bits internamente, con los tres (o cuatro, como alfa normalmente se incluye) componentes empaquetados en el entero.

En una máquina poco-endian (como x86) el 0x01020304 número entero en realidad ser almacenado en la memoria como 0x04030201. Y por lo tanto 0x00BBGGRR se almacenará como 0xRRGGBB00!

Así que el BGR plazo (y BGRA etc) es una abstracción con fugas en la biblioteca de gráficos está explicando cómo el número entero se ordena lógicamente, con el fin de hacer que el código que está accediendo directamente a los componentes de color de forma individual más legible.

Recuerde que los mapas de bits están disponibles usualmente al más partes del hardware de su procesador, y la endian que se especifica mediante, por ejemplo, adaptadores de pantalla convencionales, no es necesariamente la misma que la endian de la CPU. A nivel de la manipulación de los canales en el píxel no es problema para una CPU para extraer los campos cualquiera que sea su orden; su puramente un programador entender lo etiquetado.

Se trata de la forma en que los componentes de color se colocan en la memoria. Para BGR el orden es BGRBGRBGRBGR ..., y por el orden RGB es RGBRGBRGB ... Para BGR, el orden predeterminado para OpenCV, es la siguiente:

introducir descripción de la imagen aquí (Consulte la documentación de OpenCV ¿Cómo se almacena la matriz de la imagen en la memoria? )

Tenga en cuenta las otras respuestas se han referido a ciertos colores que son los menos o más importancia, pero que en realidad depende de la orden de bits de su máquina. Y el orden de empaquetamiento de los componentes en un unsigned int, por ejemplo, en realidad depende de su software, o en la biblioteca que está utilizando. Sin embargo, independientemente de su biblioteca, o las endianness de su máquina, por BGR píxeles de la dirección de byte del componente de color B será uno menos que para G y y dos menos que para R (y para RGB es justo al revés ).

Es simplemente RGB en un orden más estrictamente controlado, independiente del endianismo.La conversión entre ellos es sencilla una vez que conoce el endianidad de su entorno.

El BGR es una representación de 24 bits donde los 8 bits con direcciones inferiores son azules, los 8 con direcciones siguientes son verdes y los 8 con direcciones superiores son rojos.

Los valores RGB tienden a escribirse como RGB(r,g,b) donde los valores r/g/b están entre 0 y 255 inclusive o como #rrggbb, donde rr/gg/bb son valores hexadecimales de 8 bits.Todos los valores de BGR que he visto tienden a ser números enteros simples entre 0 y 16777215 (0xffffff).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top