我需要在Matlab中使用一个工具箱,它依赖于用C编写并使用OpenCV的外部程序。我正在使用Ubuntu 14.04 64位和Matlab R2014b。
m-script使用 system 函数调用它,在C程序运行后,它会读取C程序应生成的一些输出文件。这没有发生。我发现文件没有生成。
然后,我做的第一件事就是通过在终端中直接调用它来验证C程序是否正常工作,其参数与m脚本用来调用它相同。然后它工作,生成的文件。因此,C程序是正确和有效的。
回到Matlab,它又失败了。然后,我开始调试C程序,并且发现当从Matlab调用时,OpenCV函数cvLoadImage无法打开文件。如果我在外面打电话,它就有效。
我验证了传递给函数的字符串,无论是从Matlab运行还是从外部运行,它都严格相同,但Matlab调用失败了。我用 ldconfig -p |验证了来自Matlab命令窗口的grep opencv ,它显示了库。更有趣的是,在有问题的函数之前还有其他调用其他ocv函数。这是失败的。
问题是:这是我的部分配置错误的问题,还是Matlab中的错误?
提前致谢。
修改
实际上,在Matlab内部调用 sudo 附加到系统调用后,就完成了工作。有什么奇怪的,因为我使用 chmod 777 -Rf 作为整个文件夹中的最后一个资源,并验证我的用户是文件夹和Matlab进程的所有者。奇怪......但是每当我使用脚本时,我仍然不得不输入我的密码,但我的日程安排很紧张,我现在认为这种解决方法是令人满意的。
答案 0 :(得分:0)
您可以尝试使用C的MATLAB Engine API从C代码中调用MATLAB,而不是从MATLAB中调用C函数: https://es.mathworks.com/help/matlab/calling-matlab-engine-from-c-programs-1.html