44

RGBカラーは、赤(0-255)、緑(0-255)、青(0-255)の3つのコンポーネントで構成されています。

BGR色空間とは正確には何ですか?RGB色空間とどう違うのですか?

4

4 に答える 4

47

そのエンディアンについて。

RGB はバイトオーダーです。しかし、ほとんどのバニラ グラフィックス ライブラリの意図的な実装の選択は、色を内部的に符号なし 32 ビット整数として扱い、3 つ (通常はアルファが含まれているため 4 つ) のコンポーネントを整数にパックすることです。

リトルエンディアン マシン (x86 など) では、整数 0x01020304 は実際には 0x04030201 としてメモリに格納されます。したがって、0x00BBGGRR は 0xRRGGBB00 として格納されます。

したがって、BGR (および BGRA など) という用語は、色コンポーネントに個別に直接アクセスするコードを読みやすくするために、整数が論理的に順序付けられる方法をグラフィックス ライブラリが説明する漏れやすい抽象化です。

通常、ビットマップはプロセッサよりもハードウェアの多くの部分からアクセスされ、たとえば従来のディスプレイ アダプタによって指定されるエンディアンは、CPU のエンディアンと必ずしも同じではないことに注意してください。ピクセル内のチャネルを操作するレベルでは、CPU がフィールドをどのような順序で抽出しても問題ありません。純粋にラベリングのことを理解しているプログラマーです。

于 2008-12-15T22:43:52.103 に答える
28

RGBはレッド・グリーン・ブルーの略です。ほとんどの場合、RGB カラーは構造体または符号なし整数に格納され、青が最下位の「領域」 (32 ビットおよび 24 ビット形式のバイト) を占め、緑が 2 番目に少なく、赤が 3 番目に少なくなります。

BGR は同じですが、領域の順序が逆になっています。赤は最も重要でない領域を占め、緑は 2 番目 (静止)、青は 3 番目です。

一部のプラットフォーム ( Gamegear など) では、BGR モデルが使用されます。ただし、多くの場合、RGB が使用されることがあります (ただし、BGR は互換性のために多くのグラフィックス API でサポートされています)。なぜそれが使用されているのか正確にはわかりません。おそらく歴史的。

例: #FF0000 は、RGB 16 進数カラー (#rrggbb) として読み取ると純粋な赤になります。値、色なし)。#FF0000 を BGR 16 進カラーとして読み取ると、純粋な青になります。

于 2008-12-15T04:44:09.367 に答える
6

これは、色コンポーネントがメモリに配置される方法に関するものです。BGR の場合、順序は BGRBGRBGRBGR...、RGB の場合、順序は RGBRGBRGB... BGR の場合、OpenCV のデフォルトの順序は次のようになります。

ここに画像の説明を入力(イメージ マトリックスがメモリに格納される方法 については、OpenCV のドキュメントを参照してください。 )

他の回答では、特定の色が重要度が最も低いまたは最も重要であると言及されていますが、実際にはマシンのエンディアンに依存します。また、unsigned int 内のコンポーネントのパッキング順序は、実際にはソフトウェアや使用しているライブラリによって異なります。ただし、ライブラリやマシンのエンディアンに関係なく、BGR ピクセルの場合、B カラー コンポーネントのバイト アドレスは、G の場合より 1 つ少なく、R の場合より 2 つ少なくなります (RGB の場合はその逆になります)。 )。

于 2014-09-09T01:14:03.233 に答える
1

エンディアンに関係なく、より厳密に制御された順序のRGBです。環境のエンディアンがわかれば、それらの間の変換は簡単です。

BGRは24ビット表現であり、下位アドレスの8ビットは青、次のアドレス指定の8ビットは緑、上位アドレス指定の8は赤です。

RGB値は、r / g / b値が0〜255のRGB(r、g、b)として、またはrr / gg/bbが8ビットの16進値である#rrggbbとして記述される傾向があります。私が見たすべてのBGR値は、0167772150xffffff)の間の単純な整数になる傾向があります。

于 2008-12-15T04:14:35.883 に答える