问题描述
我正在尝试通过 MATLAB 和 mex
命令运行使用 OpenCV 库的 C++ 代码(代码已经有一个 mexFunction
)。
我已经安装了 OpenCV 库,我之前在 Python 中使用过它。我认为它应该适用于运行 C++ 代码。我正在运行此命令以在 MATLAB 上编译代码:
mex -setup
mex fileName.cpp -L/usr/local/lib -I/usr/local/include/
我也尝试过:
mex fileName.cpp -L/usr/local/lib -I/usr/local/include/ -llibopencv_core
但是我得到了不同的错误并且没有成功编译,例如:
错误:非常量表达式不能从类型“int”缩小到 初始化列表中的 'unsigned long' [-Wc++11-narrowing]
注意:插入显式强制转换以消除此问题 const long unsigned int
我觉得链接有问题。 如何在 macOS 上使用 Clang 编译器将 OpenCV 与 MATLAB 链接以运行 C++ 代码?
在 C++ 代码中:
#include
和 opencv2 在里面 -I/usr/local/include/
在 /usr/local/lib 里面,我只能找到这些 opencv libraries
解决方法
1- 修复是通过使用 正确路径 到 opencv 库和 Include 文件夹,因为我的计算机上有几个 opencv 文件,这些文件是使用 pip 为 python 项目安装的,我更改了brew 安装的 opencv 文件夹的路径。 2- 我不仅添加了所有需要的 -l 文件 -llibopencv_core.顺便说一句,我需要删除 (lib) 表单 llibopencv_core 所以它变成这样 -lopencv_core 以便编译器 (clang) 可以看到它。
3- 最后,为了消除缩小错误,我对变量的类型进行了一些更改以使其保持一致,仅此而已(但是,一些编译器将其视为警告,无需任何更改即可正常工作)。
>