0

「160470 * 199」ポイントを持つ yml ファイルを読み込んでいます。私のマシンでは1分以上かかります。どうすれば速くできますか?

以下のコードを使用して yml ファイルをロードしました。

 Mat sd;
 string Fsd  = "//home//Desktop//YML//sd.yml";
 FileStorage fsDemo1( Fsd, FileStorage::READ);
 fsDemo1["sd"] >> sd;
4

2 に答える 2

0

FileStorageOpenCV のクラスで読み取られたファイルは、パフォーマンスに対して十分に調整されていると想定できます。

あなたがもっと心配すべきことは、 の細やかさが本当に必要なのかということですFileStorage。この方法を使用することの欠点は、大きなファイルに対して完全な文法YAML/XMLパーサーが実行されることです。私の意見では、これは実際にディスクからファイルを読み取るのにかかる時間よりもはるかに遅くなります。

ディスクからの高速読み取りと即時使用 (解析不要) を本当に探している場合は、データをバイナリ ファイルに保存することをお勧めします。このようなファイルを使用する利点は、ファイルの読み取りに費やされる時間のみであるため、これらを解析する必要がないことです。structそれらから Cまたは C++classをすぐに読み取ることができます。

ただし、マイナス面は、データをバイナリ ファイルに書き込む場合、別のマシン (異なるアーキテクチャ) に移行するときに、特にエンディアンや可変長int型でさえも、非常に苛立たしいエラーに直面する可能性があることです。しかし、私の見解では、ほとんどの人がとにかく Intel または Intel 互換プロセッサを使用しているため、これはまれです。

于 2013-02-27T11:20:03.897 に答える
0

プログラムをリリース モードで実行します。プログラムの速度が 5 倍になります。

于 2017-11-04T14:19:00.340 に答える