ColorImageFormat から得られる FrameDescription の値

マイクロソフトの許可を得て使用しています。Microsoft.com をご覧ください。

FrameDescription からは、対象のフレーム(カラー・深度・赤外線など)の、高、幅、バイト長などを参照することができます。 深度や赤外線などと異なり、カラー画像の場合には、指定する ColorImageFormat によって FrameDescription の値が変動します。 そこで各 ColorImageFormat を指定して生成した FrameDescription が示す値について確認しました。 (どこかで一覧して確認することができた記憶がありますが)

指定した ColorImageFormat と FrameDescription から得られる値の対応表は次の通りです。 基本的には BytesPerPixel しか変化しませんね。変化してもらっては困るのですが。

ColorImageFormat と FrameDescription の対応表
FormatBytesPerPixelLengthInPixelsWidthHeightFieldOfView
Rgba420736001920108091.9
Yuv220736001920108091.9
Bgra420736001920108091.9
Bayer120736001920108091.9
Yuy2220736001920108091.9

確認に利用したコードは次のようになっています。

ColorFrameSource colorFrameSource = kinect.ColorFrameSource;
foreach (ColorImageFormat format in Enum.GetValues(typeof(ColorImageFormat)))
{
    if (format == ColorImageFormat.None)
    {
        continue;
    }

    description = colorFrameSource.CreateFrameDescription(format);
    Console.WriteLine(   "!| " + Enum.GetName(typeof(ColorImageFormat), format)
                      + " |> " + description.BytesPerPixel
                      + " |> " + description.LengthInPixels
                      + " |> " + description.Width
                      + " |> " + description.Height
                      + " |> " + description.DiagonalFieldOfView);
}