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


本文原創,未經同意,謝絕轉載!(轉載請告知本人並且經過本人同意--By Pacific-hong)

本人小碩一枚,因為專業方向圖像相關,所以用到opencv,然后網上MAC下Xcode配置opencv的教程比較少,要不然就是過時了。所以在一番倒騰之后,成功配置了OpenCV。寫下本文供他人參考,少走彎路。

 

一.版本介紹

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

macOS: macOS Sierra 10.12.4

Xcode:  Xcode 8.3(8E162)

OpenCV:opencv 2.4.13.2

 

二.安裝OpenCV

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

 1) 打開終端:復制粘貼下面腳本:

      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 }

貼幾張自己跑出來的測試圖:

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM