0

C++でビットマップを作成する際に奇妙な問題があります。8ビットのグレースケール画像を作成するためにBITMAPFILEHEADERおよびBITMAPINFOHEADER構造を使用しています。unsigned char anは予想とまったく同じ長さであるため、ビットマップデータはDMAを介してカメラから送信されます。画像を開いて保存すると、色が含まれていますか?!

あるべき姿:http://www.freeimagehosting.net/qd1ku
あるべき姿:http ://www.freeimagehosting.net/83r1s

これがどこから来ているのか、何かアイデアはありますか?

ビットマップのヘッダーは次のとおりです。

42 4D 36 00 04 00 00 00 00 00 36 00 00 00 28 00 00 00 00 02 00 00 00 02 00 00 01 00 08 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

    情報-ヘッダー:
    424Dそのビットマップ
    36 000400ビットマップのサイズ=0x040036-ヘッダーサイズ=512x512
    00 000000予約済み
    36 00 0000オフセット=Sizeof(Bitmapinfoheader);
    28 00 00 00 Sizeof(Bitmapinfoheader);
    00 02 00 00 = 0x200=512ピクセル。
    00 020000同じ
    01 00=1-標準。もう使用されていません。
    0800色部=8ビット。
    00 00 00 00圧縮:0=なし。
    00 000000ファイルサイズまたはゼロ
    00 00 00 00 X-Dot-Per-Meter、0のままにすることができます
    00 00 00 00 y-Dot-Per-Meter、0のままにすることができます
    00 00 00 00ゼロの場合、255色すべてが使用されます
    00 00 00 00ゼロの場合、カラーテーブル値は使用されません

これがどこから来たのか、何かアイデアはありますか?

4

1 に答える 1

2

ウィンドウでは、8ビットイメージのパレットを指定しない場合、システムのデフォルトのパレットが提供されます。パレットを追加するwin32の方法をすぐに思い出せませんが、各エントリの値がそのインデックスと同じである256要素のchar配列を作成し、適切な時点でファイルに書き出すのと同じくらい簡単なはずです。オフセットパラメータなどを更新します。

于 2012-06-13T07:14:06.163 に答える