問題タブ [pixelformat]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1873 参照

c# - 8bpp のインデックス付きビットマップを 24bpp に変換し、同じカスタム カラー パレットで再度変換する

ビットマップをグラフィカルに編集するツールを作成しています。ユーザーが選択したいくつかのオプションに基づいて描画し、ピクセルの色を編集できるようにするために、24bppRgb に変換する必要がある既存のカラー パレットを含む 8bppIndexed ビットマップがいくつかあります。ビットマップ グラフィックは、元の 8bpp .bmp ファイルです。

ビットマップ データグラフィックを描画および編集した後、ビットマップ グラフィックと同じカラー パレットで 8bppIndexed に変換しようとしています。私はこのようにすることができます:

ただし、グラフィックと同じピクセル形式でデータグラフィックを複製すると、まったく新しいカラー パレットが作成されます。ColorPalette pal を適用すると、データグラフィックの色がすべて正しくなくなります。2 つのパレット間のインデックス番号のみが一致します。色を保持する別の方法はありますか?

はい、ビットマップはカスタム パレットで 8bppIndexed にする必要があります。最終結果のすべてのデータ グラフィックスのカラー インデックスを正しいパレットで変更するために、Photoshop を使用する必要がないようにしています。

私はまだC#にかなり慣れていないと言わざるを得ません。私がやろうとしていることを明確にしていただければ幸いです。ここで何か助けていただければ幸いです。前もって感謝します。

0 投票する
1 に答える
3335 参照

java - イメージをバイト配列から平面 4:2:0 YUV フルスケール ピクセル形式のビットマップに変換します

更新:デバイスのベンダーに連絡したところ、平面の 4:2:0 YUV フル スケール ピクセル フォーマットを使用しているとのことでした。調べてみると、YUV 4:2:0 には I420、J420、YV12 の 3 つの主要なフォーマットがあるようです。私のコードを実行すると、Android YuvImage クラスにこの画像形式の定数があったため、興奮しましたが、次の例外が発生しました。

まあそれは残念です..

その後、YUV420 と NV21 の違いについて学びました。 YUV420 YUV420_NV21

NV21 ピクセル形式の画像に示すように、2 つのクロマ プレーンをインターリーブする単純な関数を作成しようとしました。

ただし、結果は元のコードと同じようです。考えられた理由の 1 つは、バイト配列のサイズ (1843200) でした。YUV420 の場合、1 ピクセルの深さは 12 ビットであると読みました。カメラの解像度は 1280x720 で、921,600 ピクセルまたは 1,382,400 バイトです。これは、実際のバイト配列サイズよりも 3 分の 1 小さい値です。プレーン間にパディングがあるかもしれないと読みましたが、それを調べる方法に行き詰まっています。

YuvImage クラスのコンストラクターには strides パラメーターがありますが、Android 開発者向けドキュメントを読んでも使い方がわかりません。

手がかりはありますか?

元の投稿:

次の問題があります: 使用されているカメラの種類や画像形式に関する情報が提供されていないデバイスのカメラにアクセスしようとしています。提供される唯一の情報は、ビデオ ストリーム出力を含むバイト配列を取得する方法です。しかし、解像度が 1280x720 で、バイト配列のサイズが 1843200 であることがわかりました。グーグルで検索すると、YUYV および同様のピクセル形式を使用して、まったく同じサイズと寸法のカメラを見つけました。その知識に基づいて、以下のコードを書きました。

BitmapFactory.decodeByteArray 関数は有効なビットマップを返しましたが、それを表示すると、画像に緑色の色合いと紫色の斑点が見られました。これはおそらくカラー チャネルに関連したものでしょうか? サンプル画像: 緑の色合い/紫色の斑点のある画像

使用されている正確なピクセル形式/エンコーディングを見つける方法はありますか? これから他に何を試すべきかわかりません。アドバイスをいただければ幸いです。