Mac OS X 安裝 OpenCV2.4.3【詳述】

最近給MacBook裝OpenCV走了很多彎路,讀了很多帖子和Blog,但感覺都和我遇到的情況有些不同,他們的博客也寫的很簡略,所以出於以上幾點原因加上想做一下備忘,寫了這篇很詳細很冗長的Blog。

-----------------------------------------------------------------------------------------------------------

【環境】黑蘋果 Snow Leopard 10.6.8 + XCode4.2 + OpenCV2.4.3

【方法】Homebrew 安裝 OpenCV 2.4.3

=============================================================

摘要:

(1)用Homebrew爲MacOS X安裝 Opencv + XCode 調用Opencv詳細步驟

(2)爲什麼不用MacPorts安裝Opencv

(3)黑蘋果裝Opencv遇到的一些事情

=============================================================

【# 1 #】用Homebrew爲MacOS X安裝 Opencv + XCode 調用Opencv詳細步驟

步驟概要(下文有對這些步驟的超級詳述,不懂哪裏,看哪裏)

【#】如果你的機器已經裝了macports,那麼在安裝homebrew前要先卸載掉macports,二者不兼容

【a】安裝Homebrew

【b】用brew selfupdate  更新 Homebrew

【c】用brew install cmake  安裝cmake

【d】用brew install opencv 安裝opencv

【e】將XCode的編譯器改爲LLVM GCC 4.2

【f】將opencv的動態庫手動拖入“工程”中

【g】運行你的opencv程序!

對上述步驟的超級詳述:

(#)卸載MacPorts:

在Terminal中輸入: sudo port -f uninstall installed
在Terminal中輸入: sudo rm -rf \
/opt/local \
/Applications/DarwinPorts \
/Applications/MacPorts \
/Library/LaunchDaemons/org.macports.* \
/Library/Receipts/DarwinPorts*.pkg \
/Library/Receipts/MacPorts*.pkg \
/Library/StartupItems/DarwinPortsStartup \
/Library/Tcl/darwinports1.0 \
/Library/Tcl/macports1.0 \
~/.macports

(1)安裝Homebrew:(需要Ruby)

注:因爲snow leopard 上已經自帶Ruby了,所有可以不用自己安裝Ruby(通過ruby -v 這條命令在Terminal終端上可以查看裝在你機器上的Ruby的版本,也可以用這個方法看一下,你的機器上是否已經裝好Ruby啦,如果沒有裝Ruby則要安裝Ruby,安裝步驟可以google,很簡單)。

看一下Homebrew的官網: http://mxcl.github.com/homebrew/ 進入後,將其拉到最下面,可以看到安裝方法,你只要在Terminal(終端)中輸入:

ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)"

注:不要在前面加sudo否則會有錯誤提示,但沒事,再輸入一次正確的即可。

(2)更新Homebrew,在Terminal中輸入:brew selfupdate  然後回車,即可

(3)安裝cmake, 在Terminal中輸入: brew install cmake 然後回車,即可

(4)安裝opencv, 在Terminal中輸入: brew install opencv 然後回車, 即可

(5)等待其安裝完成,至此opencv已經安裝在你的macbook上啦,現在的版本是opencv2.4.3

(6)打開XCode,新建一個Command Line Tool 工程,下一步選“C++”

(7)現在你可以寫一個小的opencv程序試一下:例如

#include <iostream>

#include <opencv/highgui.h>

#include <opencv/cv.h>

int main(int argc, char** argv)

{

        cvNamedWindow("Image", CV_WINDOW_AUTOSIZE);

        IplImage *img=cvLoadImage("/Users/用戶名/Pictures/hello.jpg", CV_LOAD_IMAGE_ANYCOLOR); //一定注意:在mac下,這裏要填寫對你圖片的路徑哦!

        cvShowImage("image", img);

        cvWaitKey(0);

        cvReleaseImage(&img);

        cvDestroyWindow("image");

        return 0;

}

大家會發現,現在的XCode已經可以自動完成OpenCV的庫函數啦,但如果編譯的話還會有很多錯誤,往下看。

(8)把編譯器改爲“LLVM GCC 4.2”:

點擊你的“項目”(左邊最上面藍色的那個,點一下),然後右邊會出一大堆東東,中間偏左,有PROJECT 和 TARGETS 字樣,點擊 灰色的PROJECT下面你的“工程”,然後在右面上側選擇“All”,然後往下看,找到“Build Options”那塊,第二項(第二條)就是編譯器,它默認的是"Apple LLVM Compiler 3.0", 你點一下這個東東,它會彈出選項,選LLVM GCC 4.2即可。之後你在點擊PROJECT下面的TARGETS那個黑色的東東,看一下它的“Build Options”,現在應該也被改爲了LLVM GCC 4.2 啦。

(9)將OpenCV的動態庫手動拖入項目:

在XCode中你的工程下建立一個NewGroup(方法:右鍵你的工程(左上,藍色的那個)然後點擊“New Group”)

然後,打開你的“Finder”(就是你mac下面那個條上,長的像人臉那個圖標)然後此時,你同時按住  Shift  Command  g  這三個建, 然後會彈出來一個對話框,你在裏輸入“/usr/local”然後回車,它會轉入local文件夾下,然後你按如下順尋進入: Cellar-->opencv-->2.4.3-->lib  你現在已經進到了lib文件夾啦,你會看到一大堆以“dylib”結尾的文件,這些就是“動態庫”,然後你找到以下三個動態庫:

       [a]    libopencv_core.2.4.3.dylib  

       [b]    libopencv_highgui.2.4.3.dylib

       [c]    libopencv_ml.2.4.3.dylib

把它們選中後(按住command建就可以多選)點住,直接拖到你在XCode中剛建好的那個NewGroup文件夾裏,然後XCode會彈出個對話框,注意,不要勾選 “Copy items into destination group's folder (if needed)”, 然後點擊“Finish”

(10)運行你寫的opencv程序

OK,至此,你已經完成了全部工作,會到你的XCode下,運行你的程序,一切搞定!


-----------------------------------------------------------------------------------------------------------

【# 2 #】爲什麼不用MacPorts安裝OpenCV:

很多帖子上的人都是用macports安裝的opencv,可能也很成功,但不懂他們是怎麼弄的,如果哪位大鳥在喝咖啡的時候偶然看到這篇如此自虐的Blog,請勿噴.........本小鳥只是想給大家多提供一種mac下玩opencv的途徑。

一開始我也用MacPorts裝OpenCV,也很方便,但沒裝成功,這是根本原因

(1)macports它不顯示進度條和百分之幾啊,有的時候下一個大的東東(例如10M的那種,呵呵),它就停在那啦,你也不知道它是還在工作啊,還是卡死在那裏啦,讓人總有種不踏實的感覺,心裏上的折磨

(2)macports的站點貌似有些不穩定,有的時候貌似很容易斷掉,尤其在天朝這種網絡環境下,十分折磨

(3)我的macports無法用port upgrade outdate這條命令

(4)我的macports用port install opencv來裝opencv,只是將其下載下來並解壓,沒有對其源碼進行編譯,後來我又用port build opencv來編譯我的opencv,但最後貌似還是沒將opencv安裝成功,但也不一定,因爲期間又有好多事情發生,有興趣的且和我的macports有同樣弊病的朋友們可以試一下,先port install opencv 然後再 port build opencv看看行不行,試過的留個言哈。

(5)macports檢查不了你的機器上,不是用macports安裝的那些軟件,例如我的Apple LLVM Compiler是跟這XCode一起安裝在mac上的,沒用macports,但用port build opencv時,macports仍然要再下一遍Apple LLVM Compiler,然後安裝它,然後才能用build命令,但Homebrew就不會這樣。

(6)安裝macports時,要斷網安裝,否則安裝的最後一分鐘,可能2個小時都過不去。

總之用Homebrew也是一個不錯的選擇,看你怎麼想啦........

-----------------------------------------------------------------------------------------------------------

【# 3 #】黑蘋果裝OpenCV遇到的一些事情:

爲什麼要用黑蘋果,原因很簡單,因爲還沒買蘋果呢。

(1)我的snow leopard下沒有  /usr/local  這個文件夾,真的沒有用Terminal查看也沒有,安裝了Homebrew後纔有了這個文件夾,而且還看不到,可能是被系統給隱藏了,因爲Homebrew下載安裝的軟件都在這個文件夾下,所以這個文件夾對我來說很重要,想要轉到  /usr/local  文件夾下可以這樣(上文已經提到過了,這裏贅述一下: 同時按住   Shift   command(windows鍵盤的那個windows標誌建)  g   這三個毽子,然後在它彈出的對話框中輸入: /usr/local  然後回車即可。

(2)mac下安完opencv後寫了一個”獲得攝像頭“的程序,用的是CvCapture *camera=cvCreateCameraCapture(0); 結果其返回“空指針”,後來才發現是因爲當時,黑蘋果下的攝像頭沒有驅動起來,之後, 重啓電腦就好使啦。

(3)一開始我都是用如  “./hello.jpg”  來加載我的“項目”目錄下的圖片,但返回空指針,後來知道,在mac下貌似用不了相對路徑,只能用  "/Users/用戶名/........"  這種纔行。

=============================================================

一下寫了這麼多,只是想打造一個稍微詳細點的教程,因爲在爲mac安裝opencv的過程中也看到很多帖子和博客,都寫的很簡單,很簡短,很模糊,所以感覺很折磨,故現在寫了這麼一篇較爲詳細的mac下安裝opencv的Blog.

如果大家還有什麼關於這方面的問題或見解或方法,可以留言或Email我。

【郵@箱】lzninchina   (at)   sina   點卡姆



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章