我想在内存中使用字符串流而不是文件流来从磁盘读取文件以达到性能目的。 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看起来和平面文件完全一样,但我不能把它转换成一个......
答案 0 :(得分:2)
svm-predict获取数据和模型的文件系统位置(这就是您第一次尝试的原因)。您无法将内存指针传递给外部程序。
您需要使用libsvm
库,或者OpenCV具有CvSVM,您可以尝试在内部使用它来提高性能。 Here是关于在OpenCV中使用SVM的几个教程。 OpenCV的SVM实现基于LibSVM,所以我可能会使用它,因为你已经在使用OpenCV了。