1.序言:
非經本人同意,謝絕轉載,原文地址:MAC下配置OpenCV的具體方法 (2016年最新)
1.1 背景
本人小白一枚,不過因為最近在從事機器視覺方面的工作,所以接觸到OpenCV.
因為工作需求,本人要在MAC端使用OpenCV實現一些視覺功能,配置環境成了最大的阻礙,網上查了很多相關資料和博客,都因為版本環境問題屢試屢敗,不過經歷重重嘗試,筆者最終還是配置成功並運行了自己的源碼.當然成功的關鍵還是因為筆者站在了巨人的肩膀上,借鑒了很多網上的教程,為了不誤導大家配置的過程,參考文章的地址統一放在文章里,望各位大大看見之后能夠理解,廢話不說進入正題.
1.2 環境說明
如果讀者的工作環境和筆者的環境相同或類似,那都可以直接按照下面的方法來實現:
先上圖說明下筆者的環境:
mac系統:
Xcode版本:
OpenCV版本:(筆者在寫這篇文章的時候OpenCV官網的版本已經出到了3.1,不過為什么不使用最新版本,其實並不是我不想用😭,下面會說明原因)
2.具體步驟:
2.1 准備工作
2.1.1
首先不要從官網下載OpenCV(筆者按照網上的其他教程提前下載好之后都出現了各種問題,如果你已經下了也無所謂,反正后面也不用它),mac上只要有Xcode就好了.
2.1.2
下載安裝Homebrew,下面簡稱brew,想深入了解brew的朋友可以自行百度或者進入官網查看,筆者給出理解是:brew是一個可以下載、更新並卸載 Mac 上的一些軟件工具的軟件包管理器,很強大(個人理解的很膚淺,沒能將brew的強大描述出來,歡迎各位專業人士幫忙點評指導,小弟在此跪謝),brew的下載安裝不能再簡單,按着下面的步驟來就可以.
(🙋有朋友可能會問,安裝brew干嘛用的啊??答:它就是之后用來自動下載OpenCV庫的,所以第一步我說了不用自己從OpenCV官網下載.🙋那么就有朋友又會問自己在官網下載不行么??答:反正小弟是沒有成功) 以下操作都是在終端進行.(在終端依次執行下面紅色腳本命令即可!)
1) 打開終端:回車/回車/回車(個人習慣,讀者不用管)復制粘貼下面腳本:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安裝過的童鞋就不用再安了,如果安裝過再執行這條命令就會提示你:你的電腦已經安裝過brew了,如你想要重新安裝必須要先執行下面的腳本:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
想必大家也知道什么意思了.腳本最后的install就是安裝,uninstall就是卸載.
這里有肥兔大大的一篇隨筆可以看下:Homebrew簡介及安裝(看看就行,操作還是按筆者的步驟來).
出現Installation successful 就說明已經安裝成功了,輸入執行brew help能查看brew的具體用法.
2) 為了保證套件的完整,接着執行官網的建議腳本,安裝wget.(其實我也不知道這個東西是干嘛,反正有好沒壞,最后成功了):
brew install wget
直接復制粘貼,然后讓brew自己裝吧,真的是好方便.等待安裝完成,都很快的.這里由於我安過了,所以:
3) 接着裝cmake,這個是必須要裝的,具體作用問度娘.
brew install cmake
同樣直接復制粘貼,如果你想自己敲也是沒有任何問題的. 同樣筆者已經裝過了:
4) 重點:這里就是不同於網上大部分mac配置opencv方法之處,讓brew幫我們下載OpenCV,而不是自己上OpenCV官網下載,切記,我從頭到尾都不會讓讀者上官網去下載,因為我沒有成功,這里感謝提出這種方法的朋友mac下配置openCV(看看就行,畢竟文章很早了).
brew install opencv
這里直接執行這個命令可能會報一個小小的錯,不過無關緊要,大概意思就是不能直接找到這個命令,終端會自己接着找,然后會告訴你正確的命令應該怎么寫,由於當時沒有截圖,所以具體命令我不記得了,實在抱歉,大家只要稍微有點英語基礎,大概看下終端彈出來的描述,就能夠知道具體應該執行的命令行了,這里應該是會提示出兩個命令,選擇關鍵字是opencv的執行即可,執行后brew會自動下載opencv,上圖:
這就是我最后裝的OpenCV的版本,這就是為什么我不用最新的版本(因為根本沒得選😂),不過大家放心,brew既然選擇了這個版本自然有他的理由,讀者也不用糾結這個問題,舊一點的版本不一定就不好.
至此,該下載的都下載好了,准備工作就ok了!!上一張最后下好的本地目錄:
/usr/local/Cellar目錄下的文件都是brew幫我們下載好的,里面的cmake,wget,opencv是我們自己下載的,其他的都是brew幫我們下的(應該都是有用的東西,什么都不要我們管,很方便有沒有).
2.2 在Xcode中使用OpenCV
2.2.1
創建一個空的command line 工程:選擇OS X -> Application -> Command Line Tool->Next;填寫自己的product名,選擇語言為C++,選擇自己存放的目錄,ok!
2.2.2
點擊工程,選擇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 (這里包含了所需要的庫文件).
2.2.3
右擊工程new一個group,然后打開/usr/local/Cellar/opencv/2.4.12_2/lib目錄(同樣點擊下空白桌面,然后shift+command+g)這個目錄之前帶大家看過一次就是brew幫我們下載的opencv目錄下的lib目錄,然后大家按照文件種類排序可以看到一些.dylib文件,將這些.dylib文件拖入剛才新建的文件夾下.我這里是18個文件,網上有說要加所有后綴是dylib文件,其實左下角帶箭頭的那些不用管.
至此,mac Xcode里配置OpenCV就大功告成了!!!是不是很簡單你都不敢相信,接下來你就可以在main.cpp文件里編譯你的OpenCV工程了!!!
這里獻上一段zhoufan大大的測試代碼,測試用代碼如下所示,從Mac自帶的攝像頭讀入圖像,然后canny提取了邊緣然后顯示。
// // main.cpp // Camera_Capture // // Created by zhoufan on 15/5/24. // Copyright (c) 2015年 zhoufan. 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, 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(