5

我需要在 Matlab 中使用一个工具箱,该工具箱依赖于用 C 编写并使用 OpenCV 的外部程序。我正在使用 Ubuntu 14.04 64 位和 Matlab R2014b。

m 脚本用系统函数调用它,在 C 程序运行后,它会读取 C 程序应该生成的一些输出文件。这是失败的。我观察到文件没有被生成。

然后,我做的第一件事是验证 C 程序是否正常工作,方法是直接在终端中调用它,使用 m 脚本用来调用它的相同参数。然后它工作并生成了文件。因此,C 程序是正确且有效的。

回到Matlab,它又失败了。然后,我开始调试 C 程序,发现 OpenCV 函数 cvLoadImage 在从 Matlab 调用时无法打开文件。如果我在外面调用它,它会起作用。

我验证了传递给从 Matlab 和外部运行的函数的字符串,它完全相同,但是 Matlab 调用永远失败。我用ldconfig -p |验证了 Matlab 命令窗口中的grep opencv并显示库。更有趣的是,在有问题的函数起作用之前,还有其他对其他 ocv 函数的调用。只是这失败了。

问题是:这是我的部分配置错误的问题,还是Matlab中的错误?

提前致谢。

编辑

实际上,从 Matlab 内部调用附加到系统调用的sudo可以完成工作。奇怪的是,因为我使用chmod 777 -Rf作为整个文件夹中的最后一个资源,并验证我的用户是文件夹和 Matlab 进程的所有者。奇怪……虽然我每次使用脚本时都必须输入密码,但我的日程安排很紧,我认为这个解决方法现在已经令人满意了。

4

1 回答 1

0

您可以尝试使用 MATLAB Engine API for C 从您的 C 代码中调用 MATLAB,而不是从 MATLAB 调用 C 函数: https ://es.mathworks.com/help/matlab/calling-matlab-engine-from-c-程序-1.html

于 2018-11-23T13:49:00.843 回答