2010-09-14 41 views
3

我嘗試以下要MacPorts的說明書安裝上http://opencv.willowgarage.com/wiki/Mac_OS_X_OpenCV_Port安裝OpenCV的,在終端中輸入使用在OSX 10.6安裝的OpenCV MacPorts的

sudo port install opencv 

安裝/編譯似乎很順利,並且這些文件應該在/ opt/local子目錄中。作爲第一個測試中,我然後試圖包括以C++源文件highgui.h:

#include <highgui.h> 

但克++或GCC編譯時,我得到error: highgui.h: No such file or directory。我是在Mac上開發的新手,所以也許我錯過了一些東西? 我想我可能不得不設置一些路徑變量,並閱讀了一些我發現谷歌搜索時,我試着設置DYLD_LIBRARY_PATH =/opt/local/lib的帖子,但這是瘋狂的猜測,它似乎沒有幫助。我該怎麼做才能讓編譯器找到庫?

謝謝!

回答

2

MacPorts將C/C++頭文件安裝在/ opt/local/include目錄中,該目錄不是系統默認的。這意味着你必須明確告訴GCC在哪裏尋找你正在使用的標題。你可以通過指定「-isystem」或「-I」命令行選項:

-isystem目錄 搜索目錄頭文件,畢竟目錄由-I,但標準的系統之前 目錄指定 。將其標記爲系統 目錄,以便它可以得到與應用於標準系統 目錄的 相同的特殊處理。如果dir以「=」開頭,那麼 然後 「=」將被sysroot前綴替換;請參閱--sysroot和 -isysroot。


-Idir 目錄dir添加到目錄列表的頭部 中搜索頭文件。這 可用於覆蓋系統 頭文件,替換您自己的版本,因爲這些 目錄搜索前 系統頭文件目錄。 但是, 您不應該使用此選項來添加包含 供應商提供的系統頭文件 (使用-isystem)的目錄。如果 使用多個-I選項,則會按照從左到右的順序以 掃描目錄;系統目錄後的標準 。

如果一個標準的系統包含目錄,或-isystem指定的目錄 ,也用-i指定 ,-I選項將被 忽略 。該目錄仍將被搜索,但作爲系統 目錄在其正常位置 系統包括鏈。這是 ,以確保GCC的程序修復buggy系統標頭 和include_next 指令的排序不會無意中更改 。如果您確實需要更改 系統目錄的搜索順序,請使用-nostdinc 和/或-isystem選項。

我推薦使用-isystem,因爲它禁用了一些警告,如果不修改代碼就無法修復。例如,如果使用-std = C++ 0x等編譯代碼,則使用std :: auto_ptr。

圖書館也是如此。你必須告訴GCC使用-L選項在哪裏找到它們。

3

我不能讓它工作很長一段時間,直到我發現有一個pkg-config集合。

所有你需要做的沒有問題的編譯是這樣的:

g++ `pkg-config --libs --cflags opencv` -o helloWorld helloWorld.cpp 

或GCC如果你是使用C而不是C++的工作。

我希望有幫助! http://opencv.willowgarage.com/wiki/CompileOpenCVUsingMacOSX

設置環境變量是這樣的::

export PKG_CONFIG_PATH=/opt/local/lib/pkgconfig 
export LD_LIBRARY_PATH=/opt/local/lib

和編譯OpenCV的代碼是這樣的:

g++ -bind_at_load `pkg-config --cflags opencv` morphology.c -o morphology `pkg-config --libs opencv`

,然後運行該代碼

+0

「pkg-config --libs --cflags opencv」必須使用特殊的反引號進行轉義,但是stackoverflow將它們解釋爲代碼標籤。 – 2011-02-09 20:58:05

1

來自OpenCV的wiki頁面引用像這樣:

./morphology
0

Macports安裝對我來說工作順利,值得在安裝opencv之前安裝tbb,大幅加速(可惜它不會以其他方式工作)。

#include <highgui.h>不是C++頭。

使用#include<opencv2/highgui/highgui.hpp>及其朋友在/opt/local/include並避免任何在/opt/local/include/opencv