문제

나는 RGB --- 값 (0-255)Red, (0-255)Green, (0-255)Blue가 색상을 형성한다는 것을 이해합니다.

BGR 색 공간이란 정확히 무엇입니까?

RGB 색공간과 어떻게 다릅니까?

도움이 되었습니까?

해결책

RGB는 Red Green Blue를 나타냅니다. 대부분의 경우 RGB 색상은 가장 중요한 "영역"(32 비트 및 24 비트 형식의 바이트)을 차지하는 파란색이있는 구조 또는 서명되지 않은 정수에 저장되고, 두 번째는 녹색이고, 세 번째는 가장 적게 붉어집니다.

BGR은 영역의 순서가 역전 된 것을 제외하고는 동일합니다. 빨간색은 가장 유의미한 영역을 차지하고, 두 번째 (여전히) 녹색, 세 번째는 파란색을 차지합니다.

일부 플랫폼에서 (예 : 게임 기어) BGR 모델이 사용됩니다. 그러나 대부분의 경우 컴퓨터와 마찬가지로 RGB는 [Citation-Releded]를 사용합니다 (BGR은 많은 그래픽 API가 호환성을 위해 지원됩니다). 잘 모르겠습니다 정확히 사용됩니다. 아마도 역사적.

예 : #FF0000은 RGB 16 진수 (#RRGGBB)로 읽을 때 순수한 빨간색입니다. 세 번째 영역은 FF (최대 값, 풀 컬러)이고 다른 두 영역은 00 (최소값)입니다. 가치, 색상 없음). #FF0000을 BGR 육각형으로 읽으면 순수한 파란색입니다.

다른 팁

그것은 관하여 엔디안.

RGB는 바이트 순서입니다.그러나 대부분의 바닐라 그래픽 라이브러리의 의도적인 구현 선택은 색상을 내부적으로 부호 없는 32비트 정수로 처리하고 3개(또는 일반적으로 알파가 포함되므로 4개) 구성 요소를 정수로 압축하는 것입니다.

x86과 같은 리틀 엔디안 시스템에서는 정수 0x01020304가 실제로 메모리에 0x04030201로 저장됩니다.따라서 0x00BBGGRR은 0xRRGGBB00으로 저장됩니다!

따라서 BGR(및 BGRA 등)이라는 용어는 색상 구성 요소에 개별적으로 직접 액세스하는 코드를 더 읽기 쉽게 만들기 위해 그래픽 라이브러리가 정수가 논리적으로 정렬되는 방식을 설명하는 누출 추상화입니다.

비트맵은 일반적으로 프로세서보다 하드웨어의 더 많은 부분에서 액세스되며, 기존 디스플레이 어댑터에서 지정하는 엔디안이 반드시 CPU의 엔디안과 동일할 필요는 없습니다.픽셀의 채널을 조작하는 수준에서는 CPU가 순서에 관계없이 필드를 추출하는 데 문제가 없습니다.라벨링 작업을 이해하는 순전히 프로그래머입니다.

색상 구성 요소가 메모리에 배치되는 방식에 관한 것입니다. bgr의 경우 주문은 bgrbgrbgrbgr ...이고 rgb의 경우 순서는 rgbrgbrgb입니다 ... bgr의 경우 opencv의 기본 순서는 다음과 같습니다.

enter image description here(OpenCV 문서를 참조하십시오 이미지 매트릭스가 메모리에 어떻게 저장됩니까?)

다른 답변은 특정 색상이 가장 적거나 가장 중요하다는 것을 언급했지만 실제로는 기계의 엔지니어에 따라 다릅니다. 서명되지 않은 int의 구성 요소의 포장 순서는 실제로 소프트웨어 또는 사용중인 라이브러리에 따라 다릅니다. 그러나 BGR Pixel의 라이브러리 또는 컴퓨터의 엔디언에 관계없이 B 색상 구성 요소의 바이트 주소는 g보다 하나이고 R보다 2 개는 낮을 것입니다 (RGB의 경우 다른 방법입니다. ).

그것은 엔디 니스와 무관하게 더 엄격하게 제어되는 순서로 RGB 일뿐입니다. 환경의 엔지니어를 알면 간단합니다.

BGR은 24 비트 표현으로, 낮은 주소 8 비트가 파란색이고, 다음으로 떨어진 8은 녹색이고, 8은 붉은 색입니다.

RGB 값은 RGB (R, G, B)로 기록되는 경향이있는 경향이 있습니다. RGB (R, G, B)는 R/G/B 값이 0에서 255 사이 또는 #RRGGBB로, 여기서 rr/gg/bb는 8 비트 HEX 값입니다. 내가 본 모든 BGR 값은 간단한 정수 인 경향이 있습니다. 0 그리고 16777215 (0xffffff).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top