【问题标题】:Compile OpenCV (2.3.1+) for OS X Lion / Mountain Lion with Xcode使用 Xcode 为 OS X Lion / Mountain Lion 编译 OpenCV (2.3.1+)
【发布时间】:2012-01-23 01:58:07
【问题描述】:

谁能提供一些详细的指南,如何在 OS X Lion 上使用 Xcode 编译 OpenCV 2.3.1?

我对此很生气……我得到了源代码,使用 cmake 创建了 Xcode 模板并尝试构建它,但它失败了,出现了大约 200 个错误。

提前致谢, 多姆

解决方案在我的回答帖子中。

【问题讨论】:

  • 你试过这个人的指南(youtube.com/watch?v=i9hYiMXLZRs)吗?
  • 感谢链接,我试试看!
  • 将此作为您自己问题的答案发布并接受,不要更新问题。不过,它的排序做得很好!

标签: xcode macos opencv osx-lion


【解决方案1】:

详细指南如何使用 MacPorts 使用 Xcode 4.2.1 在 OS X Lion (10.7.2) 下启动并运行 OpenCV 2.3.1

EDIT 08/06/2012: 这也适用于 OpenCV 2.4.1。只需确保您获得了最新版本的 Xcode 并安装了“命令行工具”(Xcode -> 首选项 -> 下载 -> 命令行工具)。

编辑 15/08/2012: 使用 Mountain Lion 以及当前版本的 Xcode 和 OpenCV 测试了所有内容……它正在工作 :) 你不必使用LLVM 编译器。

编辑 16/10/204: 去年我放弃了 MacPorts 并开始使用 brew,它更适合我的目的。

酿造指南

1.) 获取当前版本的 Brew here

2.) 确保 brew 已准备就绪

brew doctor && brew update 

3.) 安装 OpenCV(截至 2014 年 17 月 20 日 v2.4.9)

brew install opencv

4.) 启动 Xcode(截至 17/20/2014 v6.0.1)并打开/创建您的项目

5.) 选择您的目标,转到“常规”并点击“链接框架和库”中的“+”按钮

5.1.) 点击“Add Other”,点击“/”,进入“/usr/local/lib”并添加任何你需要的libopencv_**.dylib

6.) 现在将“/usr/local/include”添加到“构建设置”下的“标题搜索路径”中(目标仍处于选中状态)

7.) 最后确保在您的 .mm 文件中包含 OpenCV。

MacPorts 指南(可能已过时)

1.) 获取 MacPorts here 的当前版本。不要忘记将“/opt/local/(s)bin”添加到您的环境路径

export PATH=/opt/local/bin:/opt/local/sbin:$PATH

2.) 让您的 MacPorts 保持最新:

sudo port -v selfupdate

3.) 安装 OpenCV 2.3.1(使用 llvm-gcc 构建)

sudo port install opencv configure.compiler=llvm-gcc-4.2

4.) 启动 Xcode 并创建您的项目

5.) 选择您的目标,转到“摘要”并点击“链接框架和库”中的“+”按钮

5.1.) 点击“添加其他”,点击“/”并转到“/opt/local/lib”

5.2.) 添加任何你需要的 libopencv_**.dylib

6.) 现在将“/opt/local/include/”添加到“构建设置”下的“标题搜索路径”中(目标仍处于选中状态)

7.) 最后确保在 .pch 文件的开头有以下几行:

#ifdef __cplusplus
  #import "opencv2/opencv.hpp"
#endif

否则你会得到一些像这样令人讨厌的错误:

"Non-const static data member must be initialized out of line"
"Statement expression not allowed at file scope"

就是这样!希望它有所帮助:)

【讨论】:

  • 安装期间 ffmpeg 安装失败。你知道任何解决方法吗?
  • 至第 7 点:在必要时使用 #include 等以减少编译代码膨胀。
  • 至第1点:如果您不添加导出导出路径,您可以将适当的dylib文件从/opt/local/lib拖到您的项目中。
  • 至第3点:先安装tbb,以获得更快的opencv版本。 (sudo port install tbb 然后将+tbb 添加到opencv)
【解决方案2】:

感谢 Vachidrewer,我能够让 OpenCv 在 Mavericks 上运行。 我做事的顺序有点不同,所以这是我的笔记。

  1. 如果未安装,请安装 Macports 并将其添加到路径中。 (我已经安装好了)

  2. 使用 Macports 从命令行更新自身 $ sudo port -v selfupdate

  3. 使用 Macports 从命令行安装 opencv 及其依赖项。 $ sudo port install opencv

  4. 如果未安装,请安装 xCode。 (我已经安装好了)

  5. 使用 xCode 创建 C++ 命令行项目。

  6. 使用 xCode 通过在 xCode IDE 中运行它来验证它创建的简单 hello world C++ 程序是否正常工作。

  7. 将 xCode 创建的 main.cpp 文件从 hello world 示例修改为 Vachidrewer 中的简单 opencv 示例。

  8. 注意xCode编辑器报告找不到头文件opencv头文件。

  9. 将 /opt/local/include/ 添加到项目搜索路径并注意编辑器错误消失。

  10. 尝试在 xCode IDE 中运行程序,发现报告找不到 opencv 库。

  11. 在项目中添加一个名为 opencvfrqmework 的组,并将 /opt/local/lib/libopencv_core.dylib 和 /opt/local/lib/livopencv_highgui.dylib 添加到该组。

  12. 使用 xCode IDE 运行项目并注意弹出一个窗口,其中一半比另一半暗。

【讨论】:

  • 我想创建一个仅使用 Xcode6 for iOS 构建 opencv2.framework 的项目。你知道怎么做吗,b0ts?或者你知道我在哪里可以找到这样做的说明吗?谢谢!
【解决方案3】:

您是否尝试过仅使用标准 UNIX Makefile 构建它?

关注this guide,看看是否有帮助。如果您已经下载了源代码,您可能不需要执行建议的 svn checkout。您可能可以从第 2 节中的使用 CMake 构建开始。

希望对您有所帮助。

【讨论】:

    【解决方案4】:

    对@moosgummi 的回答稍作改动,以下步骤在Mac OSX 10.7 上使用Xcode 4.6 测试代码如下。

    安装 OpenCV :

    获取当前版本的 MacPorts here

    不要忘记将“/opt/local/(s)bin”添加到您的环境路径中

    export PATH=/opt/local/bin:/opt/local/sbin:$PATH
    

    让您的 MacPorts 保持最新状态:

    sudo port -v selfupdate
    

    使用 mac 端口安装 OpenCV

    sudo port install opencv
    

    配置 Xcode 以使用 OpenCV

    1. 使用命令行实用程序/标准工具模板创建一个新的 XCode 项目。命名并选择 C++

    2. 选择项目 -> 编辑项目设置。选择构建选项卡。将配置设置为所有配置

    3. 在架构部分,双击有效架构并删除所有 PPC 架构(如果有)。

    4. C/C++/Objective-C 编译器 > Apple LLVM 编译器 4.2 语言”>“C++标准库”,选择“libstdc++(GNU C++标准库)”

    5. 在“搜索路径”部分中,将标题搜索路径设置为 /opt/local/include/
      添加搜索路径时请选择非递归选项

    6. 关闭项目信息窗口

    7. 选择项目 -> 新建组并创建一个名为 OpenCV 框架的组 选择新组后,选择 Project -> Add files to 'Your Project Name'

    8. 按“/”键获得转到文件夹提示。输入 /opt/local/lib 选择libopencv_core.dylib、libopencv_highgui.dylib(您可能需要从这个文件夹添加其他库文件才能运行其他代码。)

    9. 取消选中复制项目...并单击添加

    测试代码

    将此代码复制到您的 main.cpp 文件中。它应该打开一个半阴影的小窗口。

    #include <iostream>
    #include <opencv2/opencv.hpp>
    
    int main(int argc, char *argv[])
    {
        // Open the file.
    
        IplImage *img = cvCreateImage( cvSize(100,200), IPL_DEPTH_8U, 3); //if (!img) {
    
        //    printf("Error: Couldn't open the image file.\n");
        //    return 1;
        //}
    
        // Display the image.
        cvNamedWindow("Image:", CV_WINDOW_AUTOSIZE);
        cvShowImage("Image:", img);
    
        // Wait for the user to press a key in the GUI window.
        cvWaitKey(0);
        // Free the resources.
        cvDestroyWindow("Image:");
        cvReleaseImage(&img);
    
        return 0;
    }
    

    【讨论】:

      【解决方案5】:

      在遇到很多错误(分段错误等)后,我终于让它工作了。教程如下:

      http://www.guidefreitas.com/installing-opencv-2-4-2-on-mac-osx-mountain-lion-with-python-support

      【讨论】:

      • 您的链接已损坏。工作链接在这里:guidefreitas.com/…
      • 当链接甚至不起作用时,仅链接的答案是无用的。
      猜你喜欢
      • 2013-02-10
      • 2012-09-15
      • 1970-01-01
      • 2012-07-25
      • 1970-01-01
      • 2012-12-07
      • 2013-09-05
      • 2012-10-31
      • 2013-06-17
      相关资源
      最近更新 更多