- 打开终端,复制粘贴下面脚本:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
你的电脑如果已经安装过brew了,如你想要重新安装必须要先卸载homebrew:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
-
为了保证套件的完整,接着执行官网的建议脚本,安装wget:
brew install wget -
接下来就利用Homebrew来安装cmake:
brew update
brew upgrade
brew install cmake -
重点:安装opencv
第一种方法:利用homebrew安装opencv
brew search opencv
brew install opencv
// 安装完成之后检查一下依赖:
brew info opencv
Easy install for beginners
brew install opencv3 --with-contrib
For intermediate and advanced users.
brew install opencv3 --with-contrib --with-cuda --with-ffmpeg --with-tbb --with-qt5
brew install opencv3 --with-contrib --with-cuda --with-gphoto2 --with-gstreamer --with-jasper --with-libdc1394 --with-opengl --with-openni2 --with-tbb --with-vtk --with-java --without-opencl
第二种方法:
去官网上下载OpenCV,链接地址http://opencv.org/downloads.html (国内可能略卡,打不开的请自行墙)
选择“OpenCV for Linux/Mac”进行下载
打开下载目录,双击解压opencv-3.1.0,到该路径下,然后新建一个release文件夹,再进到release文件夹下。
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
然后输入make就开始编译了,在OS上编译速度就是比Win上快。大概十分钟编译完毕,最后输入sudo make install进行安装,安装花的时间也挺久的,要十来分钟。
至此OpenCV就算安装完毕了。
在路径/usr/local/include下会生成opencv与opencv2子文件夹,里面包含了许多opencv的头文件。
在路径/usr/local/lib下也会生成opencv的相关的库。
关于如何查找这个“/usr/local”,打开Finder,按住Command+Shift+G,然后输入/usr/local回车就进去啦,OS下很多文件是隐藏的,通过这种方法就能进去,其它方法百度上很多,就不一一列举了。
创建工程
击工程,选择TARGETS->右侧选择All->Build Settings -> 搜索框输入search paths ->选择search paths下面的Header Search Parhs ->双击后面的详细信息添加指定路径:/usr/local/include (大家可以点击空白桌面按shift+command+g前往该目录下查看,这里目录里有刚才下好的OpenCV库的头文件)
选择search paths下面的Library Search Parhs ->双击添加指定路径:/usr/local/lib (这里包含了所需要的库文件).
222.png
右击工程new一个group,然后打开/usr/local/Cellar/opencv/2.4.13/lib目录(同样点击下空白桌面,然后shift+command+g)这个目录之前带大家看过一次就是brew帮我们下载的opencv目录下的lib目录,然后大家按照文件种类排序可以看到一些.dylib文件,将这些.dylib文件拖入刚才新建的文件夹下.我这里是18个文件,网上有说要加所有后缀是dylib文件,其实左下角带箭头的那些不用管.
至此,mac Xcode里配置OpenCV就大功告成了!!!是不是很简单你都不敢相信,接下来你就可以在main.cpp文件里编译你的OpenCV工程了!!!
这里献上一段测试代码:
//
// main.cpp
// OpenCV_1
//
// Created by 龙虾 on 2016/11/17.
// Copyright © 2016年 龙虾. All rights reserved.
//
#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;
}
网友评论