【问题标题】:How to compile OpenCV with extra modules on OS X?如何在 OS X 上用额外的模块编译 OpenCV?
【发布时间】:2016-01-14 10:42:07
【问题描述】:

我之前按照this guide成功编译过OpenCV 3.0,主要包括以下步骤:

  • 下载所有先决条件(XCode、命令行工具、CMake 和 OpenCV 源代码)
  • 通过配置 CMake(通过 gui)构建静态库:
    • 取消选中BUILD_SHARED_LIBS
    • 取消选中 BUILD_TESTS
    • 为 CMAKE_OSX_SYSROOT 添加一个 SDK 路径(如果重要,我使用了/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk)。
    • 将 x86_64 添加到 CMAKE_OSX_ARCHITECTURES(强调我的,这似乎是问题所在,我确定我已按照此步骤操作)
    • 取消选中 WITH_1394
    • 取消选中 WITH_FFMPEG
  • 通过 CMake 配置和生成,然后通过 CLI 配置和生成 makesudo make install

以上所有都可以正常工作。


我现在正在寻找使用 the extra modules 编译 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 在 main.o
ld:未找到体系结构 x86_64 的符号
clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

我已经包含了应该包含上述内容的标题:

#include <opencv2/ximgproc.hpp>

我正在通过 XCode 进行编译,我在其中为项目设置了额外的标头搜索路径 /usr/local/include 和库搜索路径 /usr/local/lib,我在这里遗漏了什么吗?

标准的 OpenCV 功能可以正常工作。

可能是什么问题,我将如何解决?

【问题讨论】:

  • 您是否已将 contrib 库添加到您的依赖项中?其余的似乎正确
  • @Miki 非常感谢您的评论,我错过了。我最初有其他链接器标志-lopencv_calib3d -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lopencv_ml -lopencv_objdetect -lopencv_photo -lopencv_shape -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videoio -lopencv_videostab,但我没有包括-lopencv_ximgproc。编译成功并添加了后者。有没有一种简单的方法可以找出所有提供的包含?
  • 您应该在您的&lt;OPENCV_DIR&gt;/install/ 文件夹下找到所有库。 &lt;OPENCV_DIR&gt;/install/x86/vc12/staticlib 在我的构建中
  • @Miki 你帮了我很大的忙,我已经尝试解决这个问题已经有一段时间了,谢谢。如果你想写一个简短的答案,我很乐意接受。
  • 完成,很高兴它有帮助!

标签: c++ xcode macos opencv opencv3.0


【解决方案1】:

OpenCV contrib 模块已正确构建。

您只需将 contrib 库添加到您的依赖项中,在本例中添加:-lopencv_ximgproc


所有可用的库都可以在&lt;OPENCV_DIR&gt;/install/ 文件夹下找到。 例如。在我的 32 位 vc12 静态构建中,位于&lt;OPENCV_DIR&gt;/install/x86/vc12/staticlib 文件夹中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    • 2016-11-04
    • 2011-03-21
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多