0

パフォーマンスのために、ファイル ストリームの代わりにメモリ内の文字列ストリームを使用して、ディスクからファイルを読み込みたいと考えています。svm-predict のパラメーターは、./svm-predict test_file model_file output_file です。これが私のコードです(libsvmを使用):

ここで、poseData は、作業中のフラット ファイル バージョンと同じ入力 svm 値を含む文字列ストリームです。

char temp[5120000];
char temp2[512];
sprintf(temp2, "./svm-predict %s %s %s", (FILE *)poseData, "tmp_train.model", (FILE*)temp );
// sprintf(temp2, "./svm-predict %s%i%s %s %s%i%s", "./Test_Files/", pos,".jpg.txt","tmp_train.model", "./Output/",pos,".jpg.output");

sprintf のコメント アウトされたバージョンは動作しますが、ハード ドライブへのアクセスのために遅くなります。また、sprintf poseData はフラット ファイルとまったく同じように見えますが、1 つにキャストすることはできません...

4

1 に答える 1

2

svm-predictは、データとモデルのファイル システムの場所を取得します (これが、最初の試みが機能する理由です)。外部プログラムにメモリ ポインタを渡すことはできません。

ライブラリを使用するか、libsvmOpenCV にはCvSVMがあり、パフォーマンスのために内部的に使用する必要があります。OpenCV で SVM を使用するためのチュートリアルがいくつかありますOpenCV の SVM 実装は LibSVM に基づいているため、とにかく OpenCV を既に使用しているため、おそらくこれを使用します。

于 2012-02-07T16:20:25.390 に答える