使用Xcode为OS X Lion / Mountain Lion编译OpenCV(2.3.1+)

6

有人能提供一个详细的指南来教我如何在Mac OS X Lion上用Xcode编译OpenCV 2.3.1吗?

我快被弄疯了……我已经获取了源代码,使用cmake创建了Xcode模板并尝试构建,但它失败了,出现了大约200个错误。

先感谢您, Dom

解决方案请看我的答案帖子。


你试过这个家伙的指南吗?(http://www.youtube.com/watch?v=i9hYiMXLZRs) - mevatron
将此内容发布为您自己问题的答案并接受它,不要更新问题。虽然整理好了很棒! - jrturton
5个回答

15

如何在 OS X Lion (10.7.2)上使用MacPorts,并使用Xcode 4.2.1来获取并运行OpenCV 2.3.1的详细指南

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

编辑 15/08/2012: 测试了Mountain Lion和当前版本的Xcode和OpenCV的所有内容...它可行 :) 您不必使用LLVM编译器。

编辑 16/10/204: 在过去的一年中,我放弃了MacPorts并开始使用brew,这对我的目的更有效。

Brew指南

1.) 获取当前版本的Brew 这里

2.) 确保已准备好使用brew。

brew doctor && brew update 

3.) 安装OpenCV(截至2014年17/20版本为v2.4.9)

brew install opencv

4.) 打开 Xcode (截至 2014 年 17/20 月 v6.0.1),打开或创建项目。

5.) 选择目标,进入“通用”选项卡,单击“链接的框架和库”的“+”按钮。

5.1.) 单击“添加其他”,输入“/”,前往“/usr/local/lib”并添加所需的任何libopencv_**.dylib

6.) 现在,在“构建设置”(仍然选择目标)下将“/usr/local/include”添加到“头文件搜索路径”中

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

MacPorts 指南(可能已过时)

1.) 在此处获取 MacPorts 的最新版本 here。不要忘记将“/opt/local/(s)bin”添加到您的环境PATH

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
否则,您将会得到一些像这样的令人讨厌的错误:

Otherwise you'll get some nasty erros like this:

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

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


安装期间ffmpeg安装失败了。你知道有什么解决方法吗? - Pavan K
到第七点:在必要的地方使用#include<opencv2/core/core.hpp>等来减少编译代码膨胀。 - Barney Szabolcs
对于第一点:如果您没有添加导出路径,您可以从/opt/local/lib中拖入相应的dylib文件到您的项目中。 - Barney Szabolcs
1
转到第三步:首先安装tbb以获取更快的opencv版本。(sudo port install tbb然后添加+tbb到opencv) - Barney Szabolcs

2
感谢Vachidrewer的帮助,我成功地在Mavericks上运行了OpenCv。由于我按照不同的顺序进行了操作,所以这里是我的笔记。
  1. 如果没有安装,请安装Macports并将其添加到路径中。(我已经安装了它)

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

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

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

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

  6. 使用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仅为iOS构建opencv2.framework。 b0ts,你知道怎么做吗?或者你知道在哪里可以找到相关的指导说明吗?谢谢! - Patricia

1

你尝试过使用标准的UNIX Makefiles构建它吗?

按照这个指南,看看是否有帮助。如果你已经下载了源代码,那么你可能不需要执行建议的svn checkout操作。你可以从第2节的使用CMake进行构建开始。

希望能有所帮助。


1

对于下面@moosgummi答案的小修改,Xcode 4.6Mac OSX 10.7上可以使用。以下是测试代码。

安装OpenCV:

获取当前版本的MacPortshere

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

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

保持你的MacPorts最新:

sudo port -v selfupdate

使用MacPorts安装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 Frameworks的组。 在新组中选择“项目”->“向‘您的项目名称’添加文件”。

  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;
}

-1

你的链接已经失效了。有效链接在这里:http://www.guidefreitas.com/installing-opencv-2-4-2-on-mac-osx-mountain-lion-with-python-support - Bharat
当链接甚至无法工作时,仅提供链接的答案是无用的。 - l'L'l

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接