1. 程式人生 > >Ubuntu 12.04 + opencv 2.4.1 + Qt 4.8.3 + Qt creater 2.5.2 安裝配置

Ubuntu 12.04 + opencv 2.4.1 + Qt 4.8.3 + Qt creater 2.5.2 安裝配置

整體參考:http://www.cnblogs.com/tornadomeet/archive/2012/07/10/2584702.html


1. opencv庫的安裝參考http://www.samontab.com/web/2012/06/installing-opencv-2-4-1-ubuntu-12-04-lts/
最好按照上面的步驟安裝,提供更多支援,opencv.org有更簡便的辦法,但貌似很多東西沒裝上。


2.Qt庫編譯安裝參考:http://www.linuxidc.com/Linux/2012-06/62606.htm
注意 ./configure 時最好只制定路徑 -prefix 其他不要亂設,容易出問題
安裝完最好不要make clean 避免出現找不到庫檔案的錯誤以及以後可以重新編譯資料庫驅動。
安裝過程可能出現 warning ,即使./configure加上 -no-webkit 還是會出現,不過好像不影響。
編譯過程出現提示說沒有許可權什麼的,就sudo執行。

如果編譯完錯誤,想重新編譯,則(進入make的路徑,一般是在解壓後的資料夾內如/xxxopensource-src/進行make操作)

直接執行下面的命令就行了。
make   uninstall
make   clean
rm -rf XXX  //XXX 目錄
如果是編譯過程出錯,要重新編譯
那就
make clean
然後再
./configure
make && make install

 後記:其實這樣還不算是靜態編譯,要在./configure 加上-static 後面接一些庫名,可以查一下




3. Qt creater 安裝參考http://www.linuxidc.com/Linux/2012-06/62607.htm
如果安裝完出錯想解除安裝,原始檔是.bin,應該會有個uninstall檔案,給予執行許可權,解除安裝。
4.直接在ubuntu軟體中心搜出來的QT,安裝完很多東西是沒有的,比如執行程式時可能不會出現qtcreater_process_stub,只彈出一個terminal,但找到可執行檔案還是可以點選執行的。
5.下載點http://qt-project.org/downloads只有最新版本,老版本可以去ftp下載ftp://ftp.qt.nokia.com/qt/source/
opencv下載點http://sourceforge.net/projects/opencvlibrary/files/
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
在還沒裝QT想使用opencv的情況下,需要用下列命令編譯:
 
g++ canny.c `pkg-config opencv --libs --cflags opencv` -o canny
需要注意的是opencv.org提供的例程中有些是從main函式傳引數的,如 ./xxx ./agrv[1]  //當然引數可以帶路徑的



執行結果如圖:





如果不是從主函式傳參,則一般需要把圖片檔案放在.c檔案同個目錄下。注意程式中圖片檔名不要寫錯。
----------------------------------------------------------------------------------------------------------------------------------------------
安裝完QT與QTcreater之後,開啟qtcreater 選擇tools--option --run & debug --qt version 選擇我們安裝的/usr/local/qt 4.8.3/bin/qmake 注意每個人的路徑有可能是不一樣的。
在QTcreater裡面使用opencv庫時需要注意一點的是,需要將opencv的標頭檔案和庫檔案與Qt關聯起來,所以在雙擊QtCreator工程下到***.pro檔案,在其後面新增下列程式碼:
 
INCLUDEPATH 
+=  /usr/local/include  \
                             /usr/local/include/opencv  \

                         /usr/local/include/opencv2

LIBS += /usr/local/lib/libopencv_video.so  \
  /usr/local/lib/libopencv_ts.so \
  /usr/local/lib/libopencv_objdetect.so \
  /usr/local/lib/libopencv_ml.so  \
  /usr/local/lib/libopencv_legacy.so \
  /usr/local/lib/libopencv_core.so \
  /usr/local/lib/libopencv_features2d.so  \
  /usr/local/lib/libopencv_imgproc.so \
  /usr/local/lib/libopencv_highgui.so \
  /usr/local/lib/libopencv_gpu.so \
  /usr/local/lib/libopencv_flann.so   \
  /usr/local/lib/libopencv_contrib.so \
  /usr/local/lib/libopencv_calib3d.so


include路徑就不用解釋了,按照共享庫的命名慣例,每個共享庫有三個檔名:real name、soname和linker name。真正的庫
檔案(而不是符號連結)的名字是real name,包含完整的共享庫版本號。soname是一個符號連結的名字,只包含共享庫的主版本號。
linker name僅在編譯連結時使用,gcc 的-L選項應該指定linker name所在的目錄。有的linker
name是庫檔案的一個符號連結,有的linker name是一段連結指令碼。上面的LIBS就是linker name


如圖,libopencv_ts.so是linker name,libopencv_ts.so.2.4是son name,libopencv_ts.so 2.4.1 是real name

注意:我們在include目錄增加opencv2的目錄,其實你真的要用的話,要繼續深入底層目錄,才能直接找到標頭檔案。比如在程式中 #include <opencv2/highgui/highgui.hpp>
這樣使用連結的相對路徑就能找到標頭檔案
還有路徑可能大家都不一樣,老版本的opencv動態庫名稱也不一樣。
 
要是嫌麻煩,直接在 /usr/local/Qt-4.8.3/mkspecs/linux-g++/qmake.conf 加入下面命令以及將上面的libs和include都加進去:
QMAKE_INCDIR = /usr/local/include/opencv
QMAKE_LIBS = -lopencv_imgproc  -lopencv_core -lopencv_highgui -lopencv_ml
注:gcc -L選項告訴編譯器去哪裡找需要的庫檔案,-L. 表示在當前目錄找。-lstack告訴編譯器要連結libstack 庫,-I選項告訴編譯器去哪裡找標頭檔案。
編譯器預設會找的目錄可以用-print-search-dirs 選項檢視。其中的libraries 就是庫檔案的搜尋路徑列表,各路徑之間用:號隔開。編譯器會在這些搜尋路徑以及-L選項指定的路徑中查詢用-l選項指定的庫,比如-lstack,編譯器會首先找有沒有共享庫libstack.so,如果有就連結它,如果沒有就找有沒有靜態庫libstack.a ,如果有就連結它。所以編譯器是優先考慮共享庫的,如果希望編譯器只連結靜態庫,可以指定-static選項。

這樣以後新建檔案就不用每個都去更改.pro檔案了。

如果你使用IDE編譯完一個給main函式傳參的程式,那也只能去到命令列執行程式並傳引數了(其實也可以在專案配置中新增需要的命令列引數),所謂IDE 只是幫你集成了編譯以及除錯的工具,如給g++,gdb,還有就是幫你連結一些庫檔案,使你省去一些輸入長命令的工作。先執行build ,再把圖片檔案放進 生成的xxx-build-desktop-Qt_4_8_3__Qt-4_8_3____目錄內。