2017-05-25 7 views
0



私はAccord.Video.ffmpegを使ってビデオをC#で記録しています。実際には、深さの大きさを示すピクセルを持つ深度ビデオです。深さの配列からビットマップを作成し、WriteVideoFrameメソッドでビットマップを保存します。
その後、私はMatlabでビデオをフレームごとに開きます。問題は、私はC#のビットマップとMatlabのフレームの間に違いがあるということです!違いは10の多かれ少なかれ(255の範囲では大したことです)(それが一定であれば現時点でテストします)。
ビットマップからビデオフレームへは何も操作しないので、問題はビデオエンコーダにあると思います。フォーマットは未加工ですが可能ですか?
ヒント?
アレックス

UPDATEVideocodec.RawでのWriteVideoFrame()のピクセル値の変更

私は新しいプロジェクトのすべてでこのコードを実行した場合、私が代わりにRGB = [の画像を読み取るしようとすると、

unsafe private void Button_Click_1(object sender, RoutedEventArgs e) 
    { 
     writerdepth.Open("testvideo.avi", 512, 424, 15, VideoCodec.Raw); 
     for (int i = 0; i <depthPixels.Length; i++) 
     { 
      this.depthPixels[i] = (byte)100; 
     } 


     try 
     { 
      fixed (byte* p = depthPixels) 
      { 
       IntPtr unmanagedPointer = (IntPtr)p; 
       depthbm = new Bitmap(512, 424, 512, System.Drawing.Imaging.PixelFormat.Format8bppIndexed, unmanagedPointer); 
      } 

     } 
     catch (Exception ex) 
     { 
      Debug.WriteLine("Errore"); 
     } 

     writerdepth.WriteVideoFrame(depthbm); 
     writerdepth.Close(); 
    } 
} 

は私のコードに戻って結構です100 100 100]私は[96 94 99]を持っています。
私の開始コードはkinect v2の深さ画像を保存しています。この関数は、新しい有効なフレームが到着したときに呼び出されます。
私はこの違いの理由の分からない...解決

答えて

0

が... Nugetパッケージだった私は、古いプロジェクト(奇妙な行動)にバージョン3.4.2-αを持っていたし、新しい3.5.0です最後のもの(働く)。パッケージを更新すると問題が解決しました

関連する問題