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 看起来也与平面文件一模一样,但我无法将其转换为一个文件...

4

1 回答 1

2

svm-predict获取数据和模型的文件系统位置(这就是您第一次尝试有效的原因)。您不能将内存指针传递给外部程序。

您需要使用该libsvm库,或者 OpenCV 具有CvSVM,您可以尝试在内部使用它来提高性能。这里有一些关于在 OpenCV 中使用 SVM 的教程。OpenCV 的 SVM 实现基于 LibSVM,所以这可能就是我会使用的,因为无论如何您已经在使用 OpenCV。

于 2012-02-07T16:20:25.390 回答