如何在OS X上编译带有额外模块的OpenCV
How to compile OpenCV with extra modules on OS X?
我以前已经按照本指南成功编译了OpenCV 3.0,它基本上由以下步骤组成:
- 下载所有先决条件(XCode,命令行工具,CMake和OpenCV源代码) 通过配置CMake(通过gui)来构建静态库:
- 取消选中BUILD_SHARED_LIBS
- 取消选中BUILD_TESTS
- 添加一个SDK路径到CMAKE_OSX_SYSROOT(如果它重要,我使用
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk
)。 - 将x86_64添加到CMAKE_OSX_ARCHITECTURES(强调我的,这似乎是问题,我确信我已经遵循了这一步)
- 取消勾选WITH_1394 取消WITH_FFMPEG
- 通过CMake配置和生成,然后在CLI中配置
make
和sudo make install
。
以上所有单独工作很好。
我现在正在寻找与额外的模块编译OpenCV。根据他们的阅读,它应该像在CMake中填写OPENCV_EXTRA_MODULES_PATH
到<opencv_contrib>/modules
一样简单,然后像往常一样构建。
我按照上面列出的步骤添加参数和构建OpenCV成功,但是,当尝试在程序中使用一个额外的模块(即cv::ximgproc::createStructuredEdgeDetection
,如果它重要的话)时,我在编译时得到以下错误:
架构x86_64:
未定义符号"cv::ximgproc::createStructuredEdgeDetection(cv::String const&, cv::Ptr<cv::ximgproc::RFFeatureGetter const>)"
,引用自:
_main in main.o
架构x86_64没有找到Ld: symbol(s)
Clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)
我已经包含了头,它应该包含上面的内容:
#include <opencv2/ximgproc.hpp>
我正在通过XCode编译,在那里我已经设置了/usr/local/include
的额外头搜索路径和/usr/local/lib
的库搜索路径为项目,我在这里错过了什么?
标准OpenCV功能运行良好。
问题可能是什么,我该如何去解决它?
OpenCV贡献模块构建正确。
您只需要将贡献库添加到您的依赖项中,在本例中添加:-lopencv_ximgproc
。
所有可用的库都可以在<OPENCV_DIR>/install/
文件夹下找到。例如,在我的32位vc12静态构建是在<OPENCV_DIR>/install/x86/vc12/staticlib
文件夹。
- 尝试导入pybind-opencv模块时出现libgtk错误
- Visual Studio C++找不到 OpenCV-Contrib 模块
- 如果我想通过OpenCV dnn模块加载PyTorch的模型,我应该如何保存它
- OpenCV:无法从 contrib 存储库中找到模块(跟踪器,选择ROI)
- 无法在 OpenCV 中运行 SFM 模块的程序
- 如何使用text.hpp(可选模块)重新编译OpenCV
- Python - OpenCV 模块缺少属性CV_CALIB_FIX_INTRINSIC
- 是否可以使用TensorFlow训练自己的模块,然后在OpenCV中使用它进行检测
- OpenCV无法引用扩展模块
- 用于 Opencv 3.3.0 窗口的非自由模块
- 用于Windows上的OpenCV的SFM模块
- 安装额外模块openCV后未定义跟踪器
- 如何仅保留OpenCV Android库的模块(Canny Edge检测)
- 在Swift Project中使用OpENCV时,无法构建模块“ OpenCV2”
- Ubuntu 14.04 LTS:如何安装OpenCV HighGui模块
- OpenCV 模块作为符号链接会导致 cmake 错误
- 确定模块化OpenCV应用程序的语言/框架
- 如何在opencv中使用ocl模块
- 在编译 Android 版 OpenCV Core 模块时,包含 Eclipse 中未解析的指令引用
- OpenCV 3.0 中缺少非自由模块