2

C++ プログラムのバッファのサイズに小さな問題があります。V4L2 を使用してカメラから YUYV 画像を取得します (例はこちらから入手できます) 。

1 つの画像を取得し、それを独自の画像構造に入れたいと考えています。V4L2 構造体とそのサイズによって指定されるバッファーは次のとおりです。

(uchar*)buffers_[buf.index].start, buf.bytesused

私の構造では、サイズが width*height*bitSize の新しいバッファー (mybuffer) を作成します (YUYV または YUV422 画像を取得するため、バイト サイズは 4 です)。

問題は、バッファーbufが作成したものと同じサイズになることを期待していたことです。しかし、これは当てはまりません。たとえば、640*480 の画像 buf=614400 と mybuffer=1228800 (2 倍の大きさ) を取得する場合などです。

なぜこれが当てはまるのか、誰にも分かりますか?

4

1 に答える 1

1

YUV4222 ピクセルあたり4 バイトを使用します

YUV422モードでは、ansUVは 2 つのピクセル間で共有されます。イメージ内のバイトは次のように並べられますU0 Y0 V0 Y1 U2 Y2 V2 Y3

次のようなピクセルを指定します。

pixel 0   U0Y0V0
pixel 1   U0Y1V0
pixel 2   U2Y2V2
pixel 3   U2Y3V2
于 2013-05-04T22:00:51.770 に答える