24 ビット bmp イメージで青い領域を見つけたい。青色のチャネルを見つけるにはどうすればよいですか? 青色チャネルにアクセスする方法は何ですか?
2 に答える
24 ビットのビットマップ (.bmp) イメージには、54 バイトのヘッダーがあります。その後にピクセルデータが続きます。ピクセルごとに、青、緑、赤の順に 3 バイトが使用されます。
これを確認するには、ペイントで 1x1 ピクセルの画像を作成し、その 1 ピクセルを青にします。.bmp ファイルを hexeditor で表示すると、55 番目のバイトの値が FF (青) で、その後の 2 バイトは 00 (緑も赤もなし) であることがわかります。もちろん、すべてのバイトを読み取る C プログラムを作成した場合にも、これを確認できます。55 バイト目から最後まで値を出力すると、同じことがわかります。
ピクセルデータは整列する必要があり、これはストライドと呼ばれます。ストライドは次のように計算されます。
stride = (width * bpp) / 8;
3x3 bmp では、ストライドは (3 * 24) / 8 = 9 になります。この値は 4 で割り切れる数 (この場合は 12) に切り上げられる必要があるため、行ごとに 3 バイト余分に必要です。ビット。したがって、すべてのバイトが青色の場合、54 バイトの後に次のようになります。
FF 00 00 FF 00 00 FF 00 00 00 00 00
FF 00 00 FF 00 00 FF 00 00 00 00 00
FF 00 00 FF 00 00 FF 00 00 00 00 00
4x4 bmp の場合、ストライド = (4 * 24) / 8 = 12 です。12 は 4 で割り切れるので、余分なバイトは必要ありません。5x5 bmp の場合、ストライド = (5 * 24) / 8 = 15 なので、行ごとに 1 バイト余分に必要です。
bmp ファイル形式の詳細については、このウィキペディア ページを参照してください。お役に立てれば!
24 ビット ピクセル (24bpp) 形式は、16,777,216 の異なる色をサポートし、3 バイトごとに 1 つのピクセル値を格納します。各ピクセル値は、ピクセルの赤、緑、青のサンプルを定義します (RGBAX 表記では 8.8.8.0.0)。特に順番に (青、緑、赤、各サンプルあたり 8 ビット)。
...ここから。