从windows换成MacOS系统,需要重新配置openCV用一用,顿时想起被Visual Studio和各种环境Path支配的恐惧……所幸,OS系统配置opencv算是十分方便了,但首先,您要先有Xcode(快先到APP store搜索下载吧,5GB+,要下比较久的)。正好平时做iOS开发,Xcode已经装好,此时就很庆幸了,剩下的工作,就是在终端(terminal)中敲几行命令的事儿了!
就是这玩意儿了,功能实为强大!
整个过程十分简单便捷,预计1个小时以内可以搞定,比windows友好很多。
代码都是亲测可行,我的环境是MACOS 10.13.4 + Xcode9.3
预准备阶段:
什么都不要做!是的,不需要像windows一样先去opencv管网下载安装最新版本。因为我们后面会使用终端命令行来完成这个过程。后者的操作办法更稳妥些,可以自动适配你的操作系统/xcode等,不会出现很多莫名其妙的问题。
第一步
安装Homebrew。Homebrew是一个软件包管理器,可以安装apple没有给你预装的东西。它会将软件安装到独立目录,并将文件软连接至/usr/local。详情到这里了解一下:https://brew.sh/index_zh-cn.html
安装方法:打开终端,输入:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
响应界面:
按回车继续,响应是:
可以看出,使用homebrew方法,可以自动适配你的xcode版本和OS操作系统版本。这也为后面的配置省了很多麻烦。
出现下面提示就是安装OK啦:
第二步
安装wget。
brew install wget
wget是一个从网络上下载文件的自由工具,可以在用户退出系统之后继续在后台执行,直到下载任务完成。详见:https://baike.baidu.com/item/wget/9925250?fr=aladdin,但是为什么要装也不知道了,有些大牛的教程里推荐安装,似乎不装也没关系?
第三步
安装cmake。
brew install cmake
这个是必须安装的了。它是个跨平台的安装工具,具体的参见百度百科:https://baike.baidu.com/item/cmake/7138032?fr=aladdin。再输入一次命令,可以检查一下是否安装成功了已经:
第四步
重点来了,利用brew帮忙安装opencv!
brew install opencv
这个时候,会耗费一段时间来安装opencv,界面响应如下
等安装进度条都跑完(有一大堆库要一个个来的,大概要10分钟),至此opencv安装就完成了。
在Xcode中使用OpenCV
1)打开Xcode,创建一个空的command line工程:
操作顺序如下;选择语言C++
项目名称随便写个,记得语言选择C++:
点击工程,按如下找到Header Search Paths和Library Search Paths:分别输入如下图所示的/usr.......。
创建一个new groups,用来存放opencv的头文件。
前往:/usr/local/Cellar/opencv/3.4.1_4/lib (桌面下按shift+command+g,输入,快速进入这个文件夹)。
这里3.4.1_4是homebrew自动帮忙安装的opencv的版本号。这个要根据你的brew给你装的是哪个版本的来定了。
将里面的.dylib文件拖入刚才新建的文件夹下。可以按照种类排序一下,左下角有箭头的,就是替身文件,可以不用拖进去。
至此,配置工作大功告成。
下面就可以用一下canny算子代码来测试一下效果了:
#include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/opencv.hpp> using namespace std; using namespace cv; IplImage* doCanny(IplImage* image_input, double lowThresh, double highThresh, double aperture) { if(image_input->nChannels != 1) return (0); IplImage* image_output = cvCreateImage(cvGetSize(image_input), image_input->depth, image_input->nChannels); cvCanny(image_input,image_output,lowThresh,highThresh,aperture); return(image_output); } int main(int argc, const char * argv[]) { cvNamedWindow("Camera" , CV_WINDOW_AUTOSIZE ); CvCapture* capture = cvCreateCameraCapture(CV_CAP_ANY); assert(capture != NULL); IplImage *frame = 0; frame = cvQueryFrame(capture); IplImage *frame_edge = cvCreateImage(cvGetSize(frame), IPL_DEPTH_8U, 1); while(1) { frame = cvQueryFrame(capture); if(!frame) break; cvConvertImage(frame,frame_edge,0); frame = cvCloneImage(frame_edge); frame_edge = doCanny(frame_edge,70,90,3); cvShowImage("Camera",frame_edge); char c = cvWaitKey(15); if(c == 27) break; } cvReleaseCapture(&capture); cvReleaseImage( &frame_edge ); cvReleaseImage( &frame); return (int)0; }
结果图如下:(附上自己帅照??)
祝大家都能配置成功哟!