如何使用适用于 macOS 的 MATLAB link OpenCV
How to link OpenCV with MATLAB for macOS
我正在尝试 运行 将 OpenCV 库与 MATLAB 和 mex
命令一起使用的 C++ 代码(该代码已有 mexFunction
)。
我已经安装了 OpenCV 库,我之前在 Python 中使用过它。我假设它应该适用于 运行ning 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
但是我得到了不同的错误并且没有编译成功,例如:
error: non-constant-expression cannot be narrowed from type 'int' to
'unsigned long' in initializer list [-Wc++11-narrowing]
note: insert an explicit cast to silence this issue
const long unsigned int
感觉linking 有问题。
我如何使用 MATLAB link OpenCV 到 运行 在 macOS 上使用 Clang 编译器的 C++ 代码?
在 C++ 代码中:
#include
opencv2在里面-I/usr/local/include/
在/usr/local/lib里面,我只能找到这些
opencv libraries
1- 修复方法是使用 正确的路径 到 opencv 库和包含文件夹,因为我的电脑上有几个 opencv 文件,它们是使用 pip for python 项目,我将路径更改为 brew 安装的 opencv 文件夹。
2-我不仅添加了所有需要的-l文件
-llibopencv_core。顺便说一句,我需要删除 (lib) 形式 llibopencv_core 所以它变成这样 -lopencv_core 这样编译器 (clang) 就可以看到它。
3- 最后,为了消除缩小错误,我对变量的类型进行了一些更改以使其保持一致,仅此而已(但是,某些编译器将其视为警告并且可以在不进行任何更改的情况下正常工作)。
我正在尝试 运行 将 OpenCV 库与 MATLAB 和 mex
命令一起使用的 C++ 代码(该代码已有 mexFunction
)。
我已经安装了 OpenCV 库,我之前在 Python 中使用过它。我假设它应该适用于 运行ning 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
但是我得到了不同的错误并且没有编译成功,例如:
error: non-constant-expression cannot be narrowed from type 'int' to 'unsigned long' in initializer list [-Wc++11-narrowing]
note: insert an explicit cast to silence this issue const long unsigned int
感觉linking 有问题。 我如何使用 MATLAB link OpenCV 到 运行 在 macOS 上使用 Clang 编译器的 C++ 代码?
在 C++ 代码中:
#include
opencv2在里面-I/usr/local/include/
在/usr/local/lib里面,我只能找到这些 opencv libraries
1- 修复方法是使用 正确的路径 到 opencv 库和包含文件夹,因为我的电脑上有几个 opencv 文件,它们是使用 pip for python 项目,我将路径更改为 brew 安装的 opencv 文件夹。 2-我不仅添加了所有需要的-l文件 -llibopencv_core。顺便说一句,我需要删除 (lib) 形式 llibopencv_core 所以它变成这样 -lopencv_core 这样编译器 (clang) 就可以看到它。
3- 最后,为了消除缩小错误,我对变量的类型进行了一些更改以使其保持一致,仅此而已(但是,某些编译器将其视为警告并且可以在不进行任何更改的情况下正常工作)。