- 打開終端,復制粘貼下面腳本:
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 (這里包含了所需要的庫文件).
右擊工程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;
}