0

我从事图像质量评估算法。我的问题如下:当我调用一个需要两个不在当前文件夹中的二进制 (.Exe) 文件(SVM 分类所需)的函数时(更改路径后,包括添加子路径),以便它提供结果A.当我把它放在函数所在的文件夹中时,它会提供一个结果B(正确的结果)。我不明白为什么这个指标会提供两种不同的结果?我意识到,当我将函数调用到它自己的目录时,它可以识别我所说的 EXE 文件。但是,当我调出当前目录时,它不知道 .EXE !

我注意到,如果您位于包含指标所有功能的文件夹中,它会给出结果。

而如果你出了文件,虽然你添加了包含代码的文件夹的路径和子路径,所以经过测试,你会有第二个收入。

我在等你的回复。

谢谢你。


我分别测试了包含二进制文件的代码(因此 2 个与任何其他 DLL 不同的二进制文件),但同样,当我在后面和外出时,它的工作方式不同。当我在文件夹中时,程序会识别(svm-predict 和 svm-scale)命令。当我出去时,程序无法识别它们并提供不同的结果。

我认为问题出在这里?

我把代码放在这个链接(http://www.4shared.com/zip/IrOOsChj/BIQI_release.html)你可以下载并测试它。测试只是加载一个图像,并调用函数: score_quality=biqi(img) (在代码附带的自述文件中,作者说之前没有安装libsvm)。

非常感谢

4

1 回答 1

0

一个理论:您正在使用的 exe 文件依赖于一个或多个 DLL(或其他链接代码),您的路径中有多个版本。例如,A.exe 需要 G.dll。G.dll 在您的路径中的两个位置。当您从不同位置调用 A.exe 时,它​​使用不同的链接代码。

如果您有多个版本的 A.exe 并且路径中的目录过多,也会发生这种情况。如果您碰巧在 A.exe 的主目录中,它会使用该 A.exe。当您在另一个目录中并键入 A.exe 时,您可能正在调用其他 A.exe。

我建议将您的两个二进制文件重命名为非常具体的名称:foo1.exe 和 bar1.exe。在您的函数中使用这些名称。如果您的函数没有找到这些文件,则移动文件,直到它们位于正确的位置。不要复制!

祝你好运。

于 2013-10-12T23:17:09.407 回答