2016-05-05 8 views
1

赤、緑、青のカラーストリームをMicrosoft Kinectカラーカメラビデオストリームから分離したい。これまでは、カラービデオストリームを受け取るために、Kinect for Windows SDK 2.0で提供されているサンプルコードを使用しました。Microsoft Kinectカラーカメラビデオストリームから別の赤色カラーストリーム

カラーフレームのイベントハンドラは、新しいフレームを受信するたびにフレームをWriteableBitmapオブジェクトに書き込みます。赤いカラーストリームをカラーフレームから分離してからWriteableBitmapオブジェクトにコピーするにはどうすればよいですか?

private void Reader_ColorFrameArrived(object sender, ColorFrameArrivedEventArgs e) 
    { 
     // ColorFrame is IDisposable 
     using (ColorFrame colorFrame = e.FrameReference.AcquireFrame()) 
     { 
      if (colorFrame != null) 
      { 
       FrameDescription colorFrameDescription = colorFrame.FrameDescription; 

        using (KinectBuffer colorBuffer = colorFrame.LockRawImageBuffer()) 
        { 
         this.colorBitmap.Lock(); 

         // verify data and write the new color frame data to the display bitmap 
         if ((colorFrameDescription.Width == this.colorBitmap.PixelWidth) && (colorFrameDescription.Height == this.colorBitmap.PixelHeight)) 
         { 
          colorFrame.CopyConvertedFrameDataToIntPtr(
           this.colorBitmap.BackBuffer, 
           (uint)(colorFrameDescription.Width * colorFrameDescription.Height * 4), 
           ColorImageFormat.Bgra); 

          this.colorBitmap.AddDirtyRect(new Int32Rect(0, 0, this.colorBitmap.PixelWidth, this.colorBitmap.PixelHeight)); 
         } 

         this.colorBitmap.Unlock(); 
        } 
      } 
     } 
    } 

デイリー.NETのヒントは、この程度articleを持っていますが、彼らはここに示したコードは、十分に明確ではありません。 Thisは私が必要とする結果です(Daily .NETのヒントもその記事で紹介しています)。

助けてください。

答えて

0

この方法を使用すると、colorFrame.CopyConvertedFrameDataToIntPtr - 実際のバイトをフレームデータから操作できませんでした。

これを手動で実行し、forループでバイトを処理する必要があります。

+0

データをバイト単位で保存するにはどうすればよいですか? – misfitmaniac

+0

私はこのLOCをいくつかのポストで見ましたが、これはWriteableBitmapオブジェクトのみです。 バイトマップオブジェクトに書き込む前に、Kinectのフレームデータをバイト単位で保存して処理したいとします。 – misfitmaniac

関連する問題