1

ダミーの質問で申し訳ありませんが、私はこれに不慣れで、答えを見つけることができませんでした。

  1. イメージストライドとは何ですか?
  2. Bitframeからバッファbyte[]を作成しています(問題はありません)。ビットフレームの幅は1200、ビットフレームの高さは900です。したがって、(おそらく)バッファは1200 * 900=108,0000である必要があります。ただし、バッファサイズはストライド*高さ= 432,0000(4 * 108,0000)です。

ストライドは次のようbitFrame.PixelWidth * ((bitFrame.Format.BitsPerPixel + 7) / 8); に計算します。次に使用しbitFrame.CopyPixels(pixels, stride, 0); //(byte[] pixels)ます。現在のピクセル(つまり構造体)を処理する機能があります。

struct pixel {
    float r;
    float g;
    float b;
};

また、ピクセル処理機能pixelもありprocessPixel(int x, int y)ます。この関数をバッファでどのように使用できますか?私はそれがどういうわけかこのように呼ばれなければならないと思います:

for(int i = 0; i < height; i++) {
  for(int j = 0; j < height; j++) {
    processPixel(i, j); 
    // But how could I use this function with my byte[] buffer?
    // And what exactly in this buffer? 
    // (why stride*height = 4*width*height? cause there are 3 values for pixel RGB)
  }
}
4

1 に答える 1

0

ストライドは、画像の一部であるピクセルの数に関係なく、ピクセルの行ごとのバイト数であるため、2 次元座標に基づいて影響を受けるバイトを計算する際にストライドを使用する必要があります。

void processPixel(int x, int y)
{
    // This is if your image format is 4 bytes per pixel such as RGBA
    int startByteIndex = x * 4 + y * stride; 
}

編集:急いでいた - コメントに基づいて回答が更新されました。

于 2011-11-28T12:17:11.950 に答える