在 Matlab 中使用 OpenCV:mex 找不到头文件

Posted

技术标签:

【中文标题】在 Matlab 中使用 OpenCV:mex 找不到头文件【英文标题】:Using OpenCV with Matlab: mex does not find header files 【发布时间】:2014-05-05 12:58:47 【问题描述】:

我正在尝试按照本教程连接 Matlab 和 OpenCV:http://xanthippi.ceid.upatras.gr/people/evangelidis/matlab_opencv/

由于我在 Linux 系统上工作,我无法按照 mexopts.bat 文件的说明进行操作,因为 Linux 等效文件 (mexopts.sh) 似乎有很大不同,而且我发现教程中没有提到任何选项mexopts.sh 文件。 所以我尝试在 Matlab 中设置选项。

我下载了最新的 OpenCV 版本 (2.4.8) 并根据他们网站上的说明进行编译(http://docs.opencv.org/2.4/doc/tutorials/introduction/linux_install/linux_install.html 没有 make install)。

OpenCV 目录的结构似乎有问题,因为有多个include 目录,我不确定要指定哪个。

[编辑]: 这里有很多毫无意义的代码,因为@Peter 让我意识到我只是误解了make/make install 的工作原理,所以这些代码都是多余的。

【问题讨论】:

整个编译工具链似乎可以工作,我能够编译一个不使用任何外部库的简单 cpp 文件。所以我认为这只能是 OpenCV 和我的包含设置的问题。 “没有 make install”是问题所在。 make install 将收集散布在 OpenCV 源代码树中的所有头文件,并将它们放在一个目录中以供包含。您可以将安装路径设置在您的主目录中,而不是系统目录中。 嘿@Peter,这几乎解决了我的问题。认为make install 做了一些不同的事情。感谢那。将您的评论作为答案,我会认出它/关闭这个问题。非常感谢。 【参考方案1】:

“没有make install”是问题所在。包含文件和构建的库分散在源代码树中,由构建系统确定。 make install 收集所有适合库用户使用的标头,并将它们放在一个目录中以供包含。图书馆本身也是如此。 make install 还可以“剥离”库,从而大大减小大小并缩短加载时间。

如果您不希望安装在系统目录中,可以将安装路径设置在主目录中的某个位置。

【讨论】:

以上是关于在 Matlab 中使用 OpenCV:mex 找不到头文件的主要内容,如果未能解决你的问题,请参考以下文章

在 mex 函数中使用 opencv

防止 MEX 文件在 MATLAB 中崩溃

[转] matlab调用opencv函数的配置

使用外部头文件的 mex 错误

MATLAB 错误使用 mex

如何在不复制数据的情况下将 OpenCV Mat 发送到 MATLAB 工作区?