这几天按照网上的教程给Xcode配置opencv,但是费了老劲了就是不成功,最后自己摸索了很长时间终于发现了问题所在,仅以此文给各位小伙伴避坑。
材料:Mac、Xcode(version 10.2.1)、opencv 4.1.0_2
Xcode你自己在app store里下载就行了,然后就是下载opencv了,我们也采用大多数教程推荐的homebrew.
Homebrew
关于Homebrew的一些功能和使用请参考肥兔大大的这篇博客http://www.cnblogs.com/lzrabbit/p/4032515.html
homebrew官网: https://brew.sh/index_zh-cn.html
官网会有个提示 将
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
复制到你的终端,然后回车,等一会儿(一会儿是多久看你网速)ok,显示Installation successful 就说明已经安装成功了。
然后我们就可以用homebrew来帮助我们安装软件了,这个过程总的来说还是比较方便的。
下完homebrew以后先安装一下wget,这个网上很多大佬的意思是可以不装但是装了更好,所以我们不明觉厉还是装上比较好,
直接就在终端输入 brew install wget就完事了
这里有一个问题是就你后面每次使用homebrew他会有个 Updating Homebrew...提示,而且一般耗时长,可以不用管他,直接control c下一步就行了。
装完wget就是装cmake了,这个就是必须要装了
brew install cmake
上面这两个下载安装速度都不是特别快,你可以泡杯咖啡玩会手机
最后就是安装opencv啦,老办法
brew install opencv
homebrew会自动给你下载最新的opencv,网上很多人说直接这样会出问题,反正我没出问题,建议也是终端直接拷贝回车,然后就是等着,时间也很长,下载一大堆文件库啥的,如果你网速不太好还可能下载失败,download fail啊啥的,但是失败了也不要紧,你就在输一遍brew install opencv ,他就接着你下载失败的地方接着下,网速不好下个一晚上都很正常的。
下完之后你可以再用brew install opencv检验是否下载成功,成功他会提示你
Warning: opencv 4.1.0_2 is already installed and up-to-date
To reinstall 4.1.0_2, run `brew reinstall opencv`
也就是你告诉你下好了,你要重装就输brew reinstall opencv
至此我们要下载的东西就都结束了,进入喜闻乐见的Xcode配置环节了
Xcode配置opencv
首先打开Xcode
你就点中间的Create a new Xcode project,然后选macOS下面的Application下面的第三个,也就是Command Line Tool
然后到这个界面你就自己随便选个名字,这里我们起名叫TestOpencv,底下的language记得选C++,然后就点next就行了。
然后就到这个页面啦,这里比较关键啦,小伙伴们仔细听。
点击上面五个选项中的第四个Build Phases,出现这个界面,点击下方第三个Link Binary With Libraries,然后先最小化程序,鼠标点一下桌面,使用快捷键command+shift+g,出现前往文件夹的选项,输入/usr/local/Cellar/opencv/4.1.0_2/lib进入文件夹,然后选中所有名字带libopencv的文件,拖到我们之前的Link Binary With Libraries下面。
然后我们在回到工程下,点击Build Phases左边的Build Settings选项,底下东西很多,我门先在底下五个子标题中选中All和Combined,在往底下拖,找到Search Paths标题
这里就是本文最最最最最最核心的一点了,设置Header Search Paths 和 Library Search Paths,网上很多人说你只要分别输入/usr/local/include 和/usr/local/lib就行了,实则不然,也有可能是因为他们的版本和我们不同,但毕竟时过境迁,我们以目前的最新版为准,我们双击Header Search Paths,添加三个目录
/usr/local/include
/usr/local/include/opencv4
/usr/local/include/opencv4/opencv2
然后双击 Library Search Paths,这个因为我们之前配置了Build Phases,已经有一个目录了,保险起见再 加一个
/usr/local/lib
这样就配置完毕了。
奉上一段简单的测试程序
//
// main.cpp
// TestOpencv
//
// Created by DL on 2019/5/18.
// Copyright © 2019 DL. All rights reserved.
//
#include
#include
using namespace std;
using namespace cv;
int main(int argc, const char * argv[]) {
// insert code here...
Mat test= imread("/Users/dl/Public/OneDrive/图片/test/1.jpg");
imshow("test",test);
waitKey();
}
运行成功!祝各位配置成功!