Linux ubuntu 14.04 環境下Qt creator中添加OpenCv2.4.9__Linux
來源:互聯網
上載者:User
首先,感謝佳楠的協助。
環境:Linux Ubuntu 14.04 QT4.8.5 Qt creator2.8.0 OpenCv2.4.9
OpenCv的安裝之前已經說過,QT的安裝可自行百度,QT源碼編譯安裝時時間較長,我裝了五個小時左右。然後配置 Qt creator環境。
現在,開始在Qt creator中添加OpenCv。
1)sudo gedit /usr/share/qt4/mkspecs/default/qmake.conf
在檔案內添加了下面兩句:
QMAKE_INCDIR = /usr/include/opencv //安裝opencv的目錄 QMAKE_LIBS = -lcvaux -lcv -lcxcore -lhighgui -lml
2) 建立一個空的qt工程,我取名為test。 在test.pro檔案內添加opencv的動態連結程式庫 如果不知道都有什麼,可用 ( pkg-config
向使用者向程式提供相應庫的路徑、版本號碼等資訊) pkg-config opencv --libs --cflags opencv >>opencv.config
(--cflags參數提取出編譯所需的選項,--libs參數提取出串連時的選項 )
將輸出相應的資訊在 opencv.config 中,進行修改之後,我的如下:
INCLUDEPATH +=/usr/local/include/opencv \ /usr/local/include LIBS +=/usr/local/lib/libopencv_calib3d.so \ /usr/local/lib/libopencv_contrib.so \ /usr/local/lib/libopencv_core.so \ /usr/local/lib/libopencv_features2d.so \ /usr/local/lib/libopencv_flann.so \ /usr/local/lib/libopencv_gpu.so \ /usr/local/lib/libopencv_highgui.so \ /usr/local/lib/libopencv_imgproc.so \ /usr/local/lib/libopencv_legacy.so \ /usr/local/lib/libopencv_ml.so \ /usr/local/lib/libopencv_nonfree.so \ /usr/local/lib/libopencv_objdetect.so \ /usr/local/lib/libopencv_ocl.so \ /usr/local/lib/libopencv_photo.so \ /usr/local/lib/libopencv_stitching.so \ /usr/local/lib/libopencv_superres.so \ /usr/local/lib/libopencv_ts.a \ /usr/local/lib/libopencv_video.so \ /usr/local/lib/libopencv_videostab.so
然後把上面的都複製到 test.pro檔案內 即可。
3)測試
在main.cpp裡使用下面代碼
#include <cv.h> #include <highgui.h> int main() { IplImage *img = 0; img = cvLoadImage("lena.jpg",-1); //lena.jpg在所建工程的目錄下 cvNamedWindow("lena", 1); cvShowImage("lena", img); cvWaitKey(0); return 0; }
注意的地方是, lena.jpg在所建工程的目錄下,指的是在所在工程的debug檔案中,如我的在“ build-testopencv-案頭-Debug ”,否則不會顯示圖片。
然後運行,有圖有真相:
至此,QT中添加opencv完成。缺憾的是以後重新寫程式是還要自己在 .pro 檔案中自己添加依賴庫。
網上有一種方法是: 直接將上面的添加的INCLUDEPATH和LIBS內容添加到
sudo gedit /usr/share/qt4/mkspecs/default/qmake.conf “這樣以後就不用在每個工程裡配置了,不過移植的時候就需要注意了。”可見於 http://blog.csdn.net/b5w2p0/article/details/8945388
但我在ubuntu 中實驗時發現這種方法並不成功,opencv 所需要的 “cv.h”等還是找不到相應的路徑。所以,並未採用這一種方法。
歡迎討論。