Top > Kinect > ExtendKinectLibrary > HowToUse > GetVisualImageFromImageFrame
Last-modified: Thu, 11 Oct 2012 11:39:03 HADT
Counter:2705 Today:1 Yesterday:0 Online:1
このエントリーをはてなブックマークに追加

ColorImageFrameからカメラ画像を直ちに取得する

About

 Kinectのカメラ画像を表示するには、まずColorImageFrameを展開して、その後で各開発環境で利用される可視化のための形式に変換します。開発の度に処理を実装するのは面倒なので、各開発環境で利用されるデータ形式に変換して返す拡張メソッドを実装しました。対応する形式は次の通りです。またYUVには対応していない点に注意してください。

  • WPF「BitmapSource」形式
  • WindowsForms「Bitmap」形式
  • XNAFramework「Texutre2D」形式

サンプルはXNAですが、WPF向け、WindowsForms向けのメソッドも用意されています。

  • &ref(): File not found: "WindowsGame1_GetVisualImageFromImageFrame.zip" at page "Kinect/ExtendKinectLibrary/HowToUse/GetVisualImageFromImageFrame";
    • VisualStudio2010
    • XNA4.0

捕捉

 YUVカラーに関しては、一般的に利用される各開発環境下で対応されていないので全てRGB対応となっています。またXNAで利用するためのGetTexture2Dメソッドですが、Texture2DがBGR配列に対応しないため、RGBAに一度反転しています。またAは一律で255です。カメラから取得したデータに対して走査する様な実装を行う場合は、その際に序に反転してしまう方が効率が良いので、注意してください。

GetTexture2Dメソッド

Description
 XNA4.0向けにColorImageFrameからTexture2Dを返します。フォーマットは32bppRgbに限定されます。XNA4.0がYUVを標準対応しないため、YUVには対応していません。Kinectから得られるデータ配列がBGRAであるのに対し、XNAのSurfaceColorFormatColorはRGBAで構成されるため、全画素分の配列に対し、走査・値の置き換え処理を行っています。

Sample

            //Kinectから画像を取得する
            ColorImageFrame temp = kinect.ColorStream.OpenNextFrame(0);

            //EKLのメソッドを使って簡単にTexture2Dを取得する
            if (temp != null)
            {
                tex2d_Camera = temp.GetTexture2D(GraphicsDevice);

                //不要になったColorImageFrameを破棄する
                temp.Dispose();
            }

GetBitmapSourceメソッド

Description
 WPF向けにColorImageFrameからBitmapSourceを返します。フォーマットはBgr32に限定されます。WPFがYUVを標準対応しないため、YUVには対応していません。

Sample



GetBitmapメソッド

Description
 WindowsForms向けにColorImageFrameからBitmapを返します。フォーマットは32bppRgbに限定されます。WindowsFormsがYUVを標準対応しないため、YUVには対応していません。

Sample



References

  • 「1.XNAでKinectのカメラ画像を表示する」- Neareal