mac上配置Opencv分为以下步骤:
电脑上已经装完xcode,则继续往下看:
(大体分为两个: 下载opencv; 配置xcode)
本文参考以下文章,经实践后取得成功.
http://www.cnblogs.com/linjk/p/6029306.html
https://www.cnblogs.com/hongyang/p/6644775.html
https://www.jianshu.com/p/f25a9d35099b
https://blog.csdn.net/gflytu/article/details/46444027
我写了本篇文章,希望大家在配置方面节约时间.
1.安装Homebrew
终端粘贴:
安装Homebrew 地址: https://brew.sh
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安装science
brew tap homebrew/science
安装opencv
brew install opencv
如果安装出问题的话,可以使用下面的命令重试一下。
brew install opencv --env=std
(以上步骤,要耐心等,时间较长,建议在网速好的地方操作)
2.Xcode中新建一个Command Line TOOL的C++的项目
- 新建一个Command Line TOOL的C++的项目 , 命名为下图:
- 点击工程,右侧选择All->Build Settings -> 搜索框输入search paths ->选择search paths下面的Header Search Paths ->双击后面的详细信息添加指定路径:/usr/local/include ->选择search paths下面的Library Search Paths ->双击添加指定路径:/usr/local/lib (这里包含了所需要的库文件).
* 在工程下, 新建一个Group(命名为NENE),将 opencv-lib中的文件放在里面
command+shift+G 输入/usr/local/Cellar/opencv
找到lib文件夹如下图,点add即可:
3.测试项目
可以复制我的下面代码,测试下是否配置好.
#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, char* argv[])
{
cvNamedWindow("Camera" , CV_WINDOW_AUTOSIZE );
CvCapture* capture = cvCreateCameraCapture(CV_CAP_ANY);
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;
}