XCode+OpenCV

5 篇文章 0 订阅
5 篇文章 0 订阅

再转一篇Xcode+OpenCV

From: http://blog.csdn.net/fsseven/article/details/7958392

Mac上OpenCV环境确实各种麻烦。。。也可能是我不熟悉的关系。。。总之,折腾了我N久才搞定。。。

linux和windows上也没那么纠结。。。


下面说一下我在配置环境中碰到的问题和解决的方法吧

对于mac上开发C++来说,最常用的一个东西就是MacPorts(http://www.macports.org/index.php)

用了下这个东西,感觉它应该就是一个toolchain,或者说,有点像ubuntu的软件包管理器的东西,各种在开发中需要用到的库或者开发环境都可以从里面获得,而且是傻瓜式安装,傻瓜式管理

那么,如何安装macports?这个其实官方文档或者网上都能搜到,在这里我就简单介绍下

1. 从官网(上文已经给出)下载最新的MacPorts安装包,然后解压

2.执行基本的安装三部曲:

   cd #解压出来的文件夹#

   ./configure

   make

   sudo make install

3.三步完成后,会提示你把路径添加到$PATH,忘记记录默认路径是什么了,我是直接找到相关文件复制到/usr/bin/下面,这样就不用改PATH了

 (修改PATH的方法主要就是用 export 语句修改 )

这样,MacPorts就算安装完成了

现在在控制台输入port以后,应该就会进入MacPorts的控制台了,当然我们不需要进入,输入quit,回车后退出MacPorts的控制台


当MacPorts安装完成以后,接下来别先急着下载OpenCV,我们还需要对MacPorts进行更新

执行:

   sudo port -v selfupdate

等待完成


好了!一切准备就绪,我们可以开始安装OpenCV了!

执行:
  sudo port install opencv

耐心等待完成。。。

到这里,恭喜你!完成了OpenCV的安装。。。但是。。。显然还没有完。。。

因为,如果不在XCode里进行环境配置的话,我们无法使用OpenCV,配置环境过程其实还是比较简单
用过Visual Studio的应该都很清楚,无非指定头文件和lib库的地址

因为使用MacPorts安装OpenCV的话,默认头文件路径是在/opt/local/include,默认库文件是在/opt/local/lib中
所以我们新建一个控制台程序,指定语言为C++
然后在XCode里分别把这些填上

最后
#include<cv.h>
#include<highgui.h>
编译,运行

大功告成!!!
嗯。。按照网上的教程(http://opencv.willowgarage.com/wiki/Mac_OS_X_OpenCV_Port)
应该是这样的,但是,实际上你发现可能没那么好运,那么我来讲一下我实际碰到的一些问题吧

1.Ctrl+B(编译)以后提示,找不到opencv2下的一个什么core.h(忘记名字了。。:P)
这个应该是最初会碰到的一个问题
我的解决方法是同时包含 /opt/local/include /opt/local/include/opencv

2.头文件包含的问题解决后,再编译,发现还是有错。。。而且还是一大串。。。我碰到的时候吓了一跳。。。然后上网各种查
网上主要说原因是XCode默认不使用C++11的库,而opencv里使用的unordered_map是C++11里才有的,需要在项目属性里C++ Library里选择那个with C++11 Support的选项
那么,我就乖乖的选了。。。然后。。。嗯,不错,错误确实减少了,只有一个了。。。可是。。。这个错就百思不得其解了,好像是一个变量没定义
网上压根没有这个问题的解决办法。。。然后再拼命搜。。。经过一系列折腾后(这个折腾一会儿细说)我成功了。。。
我最终猜测其实不用选择with C++11 Support 而是只要把C++ Language Dialect选为GNU98就好了,它不支持我们不用还不行嘛。。

3.这里就说下我绕的圈子吧
因为我卡在之前提到的那个变量未定义的问题上,所以我就又开始找原因了。。。

然后找到这篇文章
http://stackoverflow.com/questions/8552839/compile-opencv-2-3-1-for-os-x-lion-mountain-lion-with-xcode
这里面提到,在10.8+XCode 4.3.2 安装OpenCV需要加参数
执行:
   sudo port install opencv configure.compiler=llvm-gcc-4.2

那么我就uninstall了opencv重新加了参数安装。。。
这次奇葩了。。。
先是装到python2.7的时候提示无法激活,要强制激活,好吧。。那就强制激活。。。
然后装到ffmpeg的时候。。。居然告诉我。。。无法安装(看日志好像是ffmpeg无法识别我们指定的架构)。。。好吧,又是一通搜,终于被我找到了!!!
http://d.hatena.ne.jp/zariganitosh/20100828/macport_x86_64
这边文章的大意就是,先备份已安装的ports的列表,然后彻底删除所有安装的ports,从网上下恢复ports的包进行恢复,然后重新再安装ffmpeg

port installed > myports.txt
sudo port -f uninstall installed
sudo port clean --work --archive all  //我执行这句提示没有--archive参数,我就删掉了,只执行 sudo port clean --work all,好像没影响

curl http://svn.macports.org/repository/macports/contrib/restore_ports/restore_ports.tcl -o restore_ports.tcl    //这里可能是恢复ports的一个脚本
chmod +x restore_ports.tcl
sudo ./restore_ports.tcl myports.txt

sudo port install ffmpeg

慢慢等。。。然后ffmpeg就安装完成了。。。
之后再执行
sudo port install opencv configure.compiler=llvm-gcc-4.2
毫无问题,顺利安装完成

之后再按照之前配置环境的步骤,我居然发现还是和之前一样的问题(详见1,2),我郁闷了,然后仔细研究了下XCode的选项,果断把C++ Language Dialect 改成GNU98

然后成功编译通过,链接通过

简单的载入了一张图片,然后显示出来,毫无问题,所以我怀疑,到问题2的时候就可以用这个方法进行解决的


终于搞定OpenCV了,庆祝下,嘿嘿
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
您好!如果您想在Xcode中使用OpenCV,以下是一些简单的步骤: 1. 首先,您需要安装OpenCV库。您可以从OpenCV官方网站(https://opencv.org/)下载适合您系统的版本,并按照安装指南进行安装。 2. 打开Xcode,并创建一个新的项目。 3. 在Xcode菜单中,选择 "File" -> "Add Files to <Your Project>". 然后选择您安装OpenCV时的文件夹,找到包含OpenCV库文件的文件夹(通常是 `/usr/local/include` 和 `/usr/local/lib`),并将它们添加到您的项目中。 4. 在Xcode中,选择您的项目,然后选择 "Build Settings"。在搜索框中输入 "Header Search Paths",然后双击该行并添加OpenCV库的头文件路径(通常是 `/usr/local/include`)。 5. 同样,在 "Build Settings" 中搜索 "Library Search Paths",然后双击该行并添加OpenCV库的库文件路径(通常是 `/usr/local/lib`)。 6. 在 "Build Phases" 选项卡中,展开 "Link Binary With Libraries" 并点击 "+" 按钮。然后从弹出的列表中选择 "libopencv_core.dylib"、"libopencv_highgui.dylib" 和 "libopencv_imgproc.dylib" 等OpenCV库文件。确保这些库文件已经添加到您的项目中。 7. 您可以在代码中引用OpenCV库,并开始使用它们了。例如,您可以添加 `#include <opencv2/opencv.hpp>` 来包含OpenCV库的头文件,并使用OpenCV功能进行图像处理和计算机视觉任务。 希望这些步骤对您有帮助!如果您有任何其他问题,请随时提问。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值