【问题标题】:Use string streams instead of file streams in svm-predict command在 svm-predict 命令中使用字符串流而不是文件流
【发布时间】:2012-02-28 16:14:53
【问题描述】:

出于性能目的,我想使用内存中的字符串流而不是文件流从磁盘中读取文件。 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 看起来也和平面文件一模一样,但我无法将其转换为一个...

【问题讨论】:

    标签: c++ opencv printf libsvm


    【解决方案1】:

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

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

    【讨论】:

    • 哦,我忘了说.. 我需要比较 svm 使用 cuda 和 cpu 的性能。我打算使用 libsvm vs cusvm
    猜你喜欢
    • 1970-01-01
    • 2012-01-02
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    • 2018-03-04
    • 2019-09-24
    • 1970-01-01
    • 2012-02-06
    相关资源
    最近更新 更多