在Qt中開發基於OpenCV的應用時,需要配置對應函數庫到環境變量,這時候我們需要使用到qmake能夠識別的變量來指定環境變量。
INCLUDEPATH: 用於指定搜索頭文件到文件夾路徑。
LIBS: 包含鏈接時的庫文件列表。使用-L來指定文件夾路徑,-l來指定庫的名稱。
而這些配置,我們需要寫入到對應到工程文件(*.pro)當中,可以有兩種寫法。
第一種:直接指定包含到庫文件名稱。
1 INCLUDEPATH += /usr/local/include/opencv2/ 2 3 LIBS += /usr/local/lib/libopencv_core.so \ 4 /usr/local/lib/libopencv_highgui.so \ 5 /usr/local/lib/libopencv_imgproc.so
這種方法必須指定整個文件到完整路徑及名稱,編寫起來相對麻煩一點。
第二種:指定庫文件路徑和庫名稱。
1 INCLUDEPATH += /usr/local/include/opencv2/ 2 LIBS += -L/usr/local/lib/ \ 3 -lopencv_core\ 4 -lopencv_highgui\ 5 -lopencv_imgproc
這里只需要先聲明庫文件的位置,然后使用-l參數來添加庫名稱即可。
2014-12-10補充:
以上介紹的方法是Linux上或者是Window下MinGW版本的Qt環境下使用方法,如果你使用的是MSVC編譯器的Qt環境,那么在編譯OpenCV庫是會在庫文件后面添加一個版本號后綴,因此在使用這類環境進行OpenCV應用程序開發的時候,你就需要在以上基礎上做稍微的修改,以我在Windows 7 64位平台上使用VS2012編譯的OpenCV 2.4.9為例,在*pro中配置OpenCV庫環境支持時使用的庫添加命令代碼如下:
1 #for OpenCV Lib 2 INCLUDEPATH += C:/opencv/install/include/ 3 LIBS += -LC:/opencv/install/x64/vc11/lib/ \ 4 -lopencv_core249 \ 5 -lopencv_highgui249 \ 6 -lopencv_imgproc249
我在Mac上運行以上代碼時,提示以下錯誤:
dyld: Symbol not found: __cg_jpeg_resync_to_restart Referenced from: /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO Expected in: /usr/local/lib/libJPEG.dylib in /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
解決辦法是將“”目錄下的對應動態鏈接庫文件創建軟連接到“/usr/local/lib”目錄下:
$ pwd /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources $ sudo ln -sf libJPEG.dylib /usr/local/lib/libJPEG.dylib $ sudo ln -sf libPng.dylib /usr/local/lib/libPng.dylib $ sudo ln -sf libTIFF.dylib /usr/local/lib/libTIFF.dylib
