1

MS Kinect を使用して、色、深度、スケルトンの出力を記録および再生しています。BinaryWriterこの情報をファイルに書き込むために使用しています。プロセスはうまく機能しますが、ファイル サイズが短時間で大きくなります (5 分間で最大 15 GB)。当然、「この情報を再生して」と呼び出した場合、このサイズのファイルをロードすると、再生を開始するまでに時間がかかります。約1時間の出力を記録できるようにする必要がありますが。その速度で行くと、記録が終わるまでに 180 GB のファイルになり、ロードしてすぐに再生するには多すぎると思います。

考えられる解決策の 1 つは、ファイルのサイズがたとえば 1 GB に達したことを検出し、別のファイルを作成して、このプロセスを繰り返し続けることです。そうすれば、1 時間の録音で 1 GB のファイルがいくつかできてしまいます。リプレイのために、それらを 1 つずつロードします。

これを行う前に、Kinect の出力が継続的にストリーミングされていることを覚えておく必要があります。したがって、新しいファイルの作成にはかなりのオーバーヘッドがかかる可能性があります。

質問:

  1. .NET の既存のファイル書き込み API は、ファイルのサイズの検出を自動化し、別のファイルを作成する方法などを提供しますか?

  2. 数秒ごとに新しいファイルを作成すると、大きなオーバーヘッドになりますか? 記録したい情報は毎秒 30 フレームの速度でストリーミングされるため、ファイルの作成中にその一部が失われる可能性があります。


研究用途なので高い精度が必要だと思います。30 分の深さの別のテストを行ったところ、カラー キャプチャは 98 Gb 近くのファイルになりました。このコード ( Kinect.Toolbox から) を使用すると、再生に永遠に時間がかかります- {

 while (reader.BaseStream.Position != reader.BaseStream.Length)
        {
            KinectRecordOptions header = (KinectRecordOptions)reader.ReadInt32();
            switch (header)
            {
                case KinectRecordOptions.Color:
                    colorReplay.AddFrame(reader);
                    break;
                case KinectRecordOptions.Depth:
                    depthReplay.AddFrame(reader);
                    break;
                case KinectRecordOptions.Skeletons:
                    skeletonReplay.AddFrame(reader);
                    break;
            }
        }

}

4

1 に答える 1

0

高い精度を必要としない場合は、サンプリング レートを下げて、小さいファイル サイズで再生する fps をサポートするのに十分な量を確保することができます。
Kinect は多くの情報をキャプチャするため、再生したいものを正確に特定し、その情報のみを保存することをお勧めします。

于 2013-02-11T02:52:12.317 に答える