イメージバッファにアクセスする - Y800-
Y800は8bit、モノクロのフォーマットです。すべてのピクセルが1バイトで表されます。イメージバッファのピクセルは左から右へ、上から下へと組織されます。つまり、イメージバッファの1バイトめが映像における1番上のラインの最初のピクセルに対応しているということです。
ピクセルデータの読み込み、書き込みの方法
ここでその動作を示すため、まずは画像取り込みデバイス、ビデオフォーマット、 FrameSnapSinkクラスライブラリリファレンス>クラス>FrameSnapSink
を設定します。以下のコードはY800ピクセルデータにアクセスする方法、変更の方法を順番に説明しています。
まず最初に、イメージバッファ内には何もありませんので、画像をキャプチャしなければなりません。そのためにライブ表示を開始し、FrameSnapSink.SnapSingleクラスライブラリリファレンス>クラス>FrameSnapSink>FrameSnapSink.SnapSingel Methodを呼び出し、GrabImageメソッドによってこれを行います。
バッファにアクセスする
イメージバッファのデータにアクセスするために、BufferAccessHelperのインスタンスを作成します。 そうすることで、buf[column,line]として個別のデータにアクセスできます。
今回の例では、画像中の最初の(左上から)2ピクセル分の読み出しをします。その次のステップでは最初の3ピクセルを扱います。Y800では上から下に保存されるので、最初のラインのインデックスは0となります。
// Y800はトップダウンなので、 最初のラインのインデックスは0となる
int y = 0;
txtOutput.Text = "Image buffer pixel format is Y800\r\n";
txtOutput.Text += "Pixel 1: " + buf[0, y] + "\r\n";
txtOutput.Text += "Pixel 2: " + buf[1, y];
画像データを操作する
ピクセルデータの読み込みを行うだけでなく、データを操作する事も可能です。次のコードは左上にあるピクセルを黒に、それに続くピクセルをそれぞれグレー、白に設定します。この変更を加えた後、画像はBMPファイルとして保存されます。
// 最初のピクセルを 0 (black)に
buf[0, y] = 0;
// 2番目のピクセルを 128 (gray)に
buf[1, y] = 128;
// 3番目のピクセルを 255 (white)に
buf[2, y] = 255;
TIS.Imaging.FrameExtensions.SaveAsBitmap(frame, "Y800.bmp");
結果をチェックするために保存された画像を開き、左上のピクセルを見てください。次のように表示されているはずです。