MAC下Xcode配置opencv(2017.3.29最新實踐,親測可行)

本文原創,未經贊成,謝絕轉載!(轉載請告知本人而且通過本人贊成--By Pacific-hong)html

本人小碩一枚,由於專業方向圖像相關,因此用到opencv,而後網上MAC下Xcode配置opencv的教程比較少,要否則就是過期了。因此在一番倒騰以後,成功配置了OpenCV。寫下本文供他人蔘考,少走彎路。ios

 

一.版本介紹git

首先介紹macOS,Xcode,OpenCV版本:github

macOS: macOS Sierra 10.12.4macos

Xcode:  Xcode 8.3(8E162)windows

OpenCV:opencv 2.4.13.2ruby

 

二.安裝OpenCVcurl

不要從官網下載opencv,由於官網沒有macos版本(ios版本不能用在macbook下),本文中使用HomeBrew安裝,方便快捷。測試

 1) 打開終端:複製粘貼下面腳本:ui

      ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

若是已經安裝過會有提示,就不會再安裝了,關於HomeBrew的安裝,能夠參考 http://www.cnblogs.com/lzrabbit/p/4032515.html

出現Installation successful 就說明已經安裝成功了,輸入執行brew help能查看brew的具體用法.

 

 2) 爲了保證套件的完整,接着執行官網的建議腳本,安裝wget.

      brew install wget

 3) 接着裝cmake,這個是必需要裝的.

      brew install cmake

 4) 重點:這裏就是不一樣於網上大部分mac配置opencv方法之處,讓brew幫咱們下載OpenCV,而不是本身上OpenCV官網下載,切記,我從頭至尾都不會讓讀者上官網去下載,由於我沒有成功,這裏感謝提出這種方法的大大mac下配置openCV(看看就行,畢竟文章很早了).

      brew install opencv

      這裏直接執行這個命令可能會報一個小小的錯,不過可有可無,大概意思就是不能直接找到這個命令,終端會本身接着找,而後會告訴你正確的命令應該怎麼寫,因爲當時沒有截圖,因此具體命令我不記得了,實在抱歉,你們只要稍微有點英語基礎,大概看下終端彈出來的描述,就可以知道具體應該執行的命令行了,這裏應該是會提示出兩個命令,選擇關鍵字是opencv的執行便可,執行後brew會自動下載opencv,上圖(由於本人機器上已經安裝,因此沒有顯示安裝的過程,不過這個不重要了):

 

      這就是我最後裝的OpenCV的版本,這就是爲何我不用最新的版本(由於根本沒得選??????),不過你們放心,brew既然選擇了這個版本天然有他的理由,讀者也不用糾結這個問題,舊一點的版本不必定就很差.

下面是本地的安裝目錄:

 

/usr/local/Cellar目錄下的文件都是brew幫咱們下載好的,裏面的cmake,wget,opencv是咱們本身下載的,其餘的都是brew幫咱們下的(應該都是有用的東西,什麼都不要咱們管,很方便有沒有).

三.在Xcode上配置OpenCV

 建立一個空的command line 工程:選擇OS X -> Application -> Command Line Tool->Next;填寫本身的product名,選擇語言爲C++,選擇本身存放的目錄。

而後就是opencv的配置了:

點擊工程,選擇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.2/lib目錄(一樣點擊下空白桌面,而後shift+command+g)這個目錄以前帶你們看過一次就是brew幫咱們下載的opencv目錄下的lib目錄,而後你們按照文件種類排序能夠看到一些.dylib文件,將這些.dylib文件拖入剛纔新建的文件夾下.我這裏是18個文件,網上有說要加全部後綴是dylib文件,其實左下角帶箭頭的那些不用管.

關於如何進入/usr目錄,還有一種方法:雙指點擊(至關於windows下的右擊)finder,而後點擊「Go to Folder」,在彈出的搜索框輸入/usr,就能進入/usr目錄啦。

 

至此,OpenCV配置大功告成。

 

這裏獻上一段zhoufan大大的測試代碼,測試用代碼以下所示,從Mac自帶的攝像頭讀入圖像,而後canny提取了邊緣而後顯示。

 1 #include <iostream>
 2 #include <opencv2/core/core.hpp>
 3 #include <opencv2/highgui/highgui.hpp>
 4 #include <opencv2/opencv.hpp>
 5 
 6 
 7 using namespace std;
 8 using namespace cv;
 9 
10 IplImage* doCanny(IplImage* image_input,
11                   double lowThresh,
12                   double highThresh,
13                   double aperture)
14 {
15     if(image_input->nChannels != 1)
16         return (0);
17     
18     IplImage* image_output = cvCreateImage(cvGetSize(image_input),
19                                            image_input->depth,
20                                            image_input->nChannels);
21     
22     cvCanny(image_input,image_output,lowThresh,highThresh,aperture);
23     
24     return(image_output);
25 }
26 
27 
28 int main(int argc, char* argv[])
29 {
30     cvNamedWindow("Camera" , CV_WINDOW_AUTOSIZE );
31     
32     CvCapture* capture = cvCreateCameraCapture(CV_CAP_ANY);
33     
34     assert(capture != NULL);
35     
36     IplImage *frame = 0;
37     frame = cvQueryFrame(capture);
38     
39     IplImage *frame_edge = cvCreateImage(cvGetSize(frame),
40                                          IPL_DEPTH_8U,
41                                          1);
42     while(1)
43     {
44         frame = cvQueryFrame(capture);
45         if(!frame) break;
46         
47         cvConvertImage(frame,frame_edge,0);
48         frame = cvCloneImage(frame_edge);
49         
50         frame_edge = doCanny(frame_edge,70,90,3);
51         
52         cvShowImage("Camera",frame_edge);
53         char c = cvWaitKey(15);
54         if(c == 27)  break;
55     }
56     
57     cvReleaseCapture(&capture);
58     cvReleaseImage( &frame_edge );
59     cvReleaseImage( &frame);
60     
61     
62     return (int)0;
63 }

貼幾張本身跑出來的測試圖:

程序運行各項設備利用率:

相關文章
相關標籤/搜索