包教包会 | (2018最新)mac下配置opencv2.X+xcode环境配置

1. 背景

踩了无数坑之后,终于把opencv2.X+xcode的环境弄好了,看了很多配置的博客,都是时间比较早的,所以我写篇文章总结一下,让大家少走弯路吧。(小白一枚,有错轻拍)

2. 环境

mac系统


mac系统.png

xcode


xcode版本.png

opencv版本
opencv版本.png

3. opencv安装

3.1安装homebrew和其它

3.1.1 homebrew没有安装的朋友,先安装homebrew安装过的忽略

打开终端,输入以下命令:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
出现install successful就表明安装成功

image.png

3.1.2 安装wget

命令:
brew install wget
我这里已经安装过了

image.png

3.1.3 继续安装cmake

命令:
brew install cmake
我这里已经安装过了

image.png

3.2 通过homebrew安装opencv2.X

重头戏来了
如果想要安装opencv3,输入命令
brew install opencv
如果想要安装opencv2,输入命令
brew install opencv@2
这里就是个小坑,因为2和3的语法变化还是蛮大的,所以在安装前一定要注意!!

安装成功的图.png

默认路径为:/usr/local/Cellar/opencv@2
到这里opencv算是安装成功了。

4.xcode配置

直接上图:

4.1

image.png

4.2

image.png

4.3

image.png

4.4

image.png

4.5

image.png

Header Search paths:头文件路径
library search paths:opencv里lib文件位置
这里值得注意的是:

  1. 一定要查看自己安装的opencv的头文件目录,很多人和我的路径并不一样,其他人微博上有header search paths在/usr/local/inlucde路径下的,所以一定要找到自己opencv和opencv2的文件夹!如果这里出错,在xcode写完代码后opencv头文件时会报错,表明opencv/opencv2 not found
    这里是我的路径:

    image.png

  2. library search paths的路径,这里就是在opencv@2文件夹下的lib(这里按默认安装位置的话应该和我的路径一致)


    image.png

4.5 在项目目录下新建group并命名(我命名为head)

image.png

4.6 按command+空格输入/usr/local/Cellar进入Cellar目录然后进入opencv的lib目录下

image.png

image.png

4.7 把所有右下角不带箭头的.dylib文件全部拖入刚刚新建的group里

如图中的这些文件,我一共有18个文件


image.png

拖好之后就是这样


image.png

4.8 然后就可以开始写代码了

image.png

5. 实例代码(从Mac自带的摄像头读入图像,然后canny提取了边缘然后显示。)

从大佬那里偷来的代码,博客上都有

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

结果:


image.png

6. over

不知道有没有讲清楚,希望大家一次配置成功!如有问题请随时指教!

推荐阅读更多精彩内容