ubuntu QT opencv
1 Star2 Stars3 Stars4 Stars5 Stars 給文章打分!
Loading...

前言:看過本人部落格的朋友都知道,我這個人還是比較青睞於紅帽子系統的,目前經常使用的Linux是rhel 6.2和Fedora 15,畢竟紅帽是那麼的穩定與方便,只不過資源不太好找。在編譯Learning OpenCV第二章第二個視訊例子的時候卻不能執行,我估摸著可能是解碼器的問題,聽朋友說Ubuntu比較方便,於是便下載安裝,並又再對OpenCV進行重新編譯,事實證明完全沒有問題。
    本文是以OpenCV-2.4.13 Ubuntu16.04 介紹編譯配置方法的,有關OpenCV版本的地方需要修改。

    首先要確保ubuntu已經安裝GTK 2.x(可以執行“pkg-config –modversion gtk -2.0”命令檢視GTK 2.x版本,見圖1)或者Carbon,否則可能導致程式不能正常執行.如果系統沒有安裝,通過下面命令進行安裝。

sudo apt-get install libgtk2.0* 

   
 然後,使用如下命令檢視GTK 2.x版本:

pkg-config --modversion gtk -2.0

     
一、首先要安裝cmake

Step1.1 具體操作如下:版本為V3.8:http://download.csdn.net/detail/lovelyaiq/9818218

$ tar -zxvf cmake-3.8.0.tar.gz
$ cd cmake-2.8.8  
$ ./bootstrap  

Step1.2 完成後,會看到提示“CMake has bootstrapped.  Now run make.”,然後執行命令:

-- Configuring done  
-- Generating done  
---------------------------------------------  
CMake has bootstrapped.  Now run make.  
$ make  
sudo make install 

 同樣的執行完這個操作後也要稍等片刻。

Step1.3  這時我們可以使用“cmake –version”命令來檢視終端是否有關於cmake的版本資訊。如果沒有的話,我們就需要修改使用者的PATH路徑,把cmake路徑加入使用者環境變數,可以執行如下命令:

echo "export PATH=$PATH:/usr/local/bin" >> ~/.bashrc  

    注意:這裡我們使用的是root使用者修改的,因此只對root使用者生效!如果其他使用者也要使用cmake命令,再使用其他使用者登入終端後修改使用者環境變數。
    也可以修改~/.bashrc檔案,如下修改在檔案最後新增上面的程式碼。
注意這裡與windows下面的環境變數不同的是環境變數之間是用冒號“:”分隔開的,而非分號“;”,重啟終端使使用者變數生效。

    測試:重新登入系統(不必重啟機器,開始->logout 或者重新開啟終端即可),使以上設定生效,在命令列輸入cmake –version,會出現如下資訊,這說明cmake環境已經成功配置並可以正常使用了。 

$ cmake --version  
cmake version 3.8.0
CMake suite maintained and supported by Kitware (kitware.com/cmake).

二、接下來我們來編譯Opencv

Step2.1 在Opencv官網下載Opencv原始碼,並解壓。

$ tar -jxvf opencv-2.4.13.tar.bz2  
$ cd OpenCV-2.3.1  
$ mkdir release  
$ cd release  

Step2.2 進入release目錄後,執行如下命令(注意這是一整條命令且最後有兩點“..”),其中“CMAKE_INSTALL_PREFIX=/opt/Opencv2“表示當我們使用“make install”命令安裝OpenCV的時候,會將相關檔案拷貝到/opt/Opencv2目錄下。

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/opt/Opencv2 -D BUILD_PYTHON_SUPPORT=ON ..

執行上述命令後,release目錄下會生產Makefile檔案等,如下圖所示:

圖 release目錄下生成的檔案及目錄

Step2.3 便可執行make進行編譯:

make

Step2.4 編譯完成後執行“sudo make install”命令,會在/opt/Opencv2目錄下生成opencv相關目錄及檔案,包括bin、lib、include等,如圖5所示。
三、最後我們來配置編譯環境,這裡我們選擇Qt IDE:http://download.qt.io/archive/qt/。下載完成後,按著嚮導一步一步地安裝Qt即可(一直單擊“Next”按鈕)。
    下面我們配置Qt下OpenCV開發環境:
    然後,將opencv.pc拷貝到/usr/share/pkgconfig目錄,此時可以使用“pkg-config opencv –cflags –libs”測試opencv.pc配置是否生效(如圖7所示)。

 

-I/opt/Opencv2/include/opencv -I/opt/Opencv2/include -L/opt/Opencv2/lib -L/usr/local/cuda/lib64 -lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_gpu -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lopencv_nonfree -lopencv_objdetect -lopencv_ocl -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videostab -lcufft -lnpps -lnppi -lnppc -lcudart -lrt -lpthread -lm -ldl

    使用如下命令修改/etc/ld.so.conf檔案,將OpenCV連結庫新增進去。(此時若無許可權,請使用root進行操作,可以使用“sudo su”命令切換root使用者)。

echo "/opt/Opencv2/lib " >> /etc/ld.so.conf   

     使用Qt IDE新建專案,依次選擇“新建專案-其他專案-空的Qt專案”,單擊“選擇”,瀏覽到指定目錄,依次單擊“下一步”即可。

    在專案檔案(*.pro,如本人新建專案的名稱為OpenCV,即需要修改OpenCV.pro)中新增如下內容:

INCLUDEPATH  = /opt/Opencv2/include/  
LIBS  = `pkg-config opencv --cflags --libs`  

    其中“LIBS = `pkg-config opencv –cflags –libs`” 包含了所有的Opencv動態連結庫。
    新建原始檔(*.cpp,,如本人新建的原始檔的檔名為OpenCV.cpp),編寫程式碼,構建-構建所有專案(Ctrl Shift B)、構建-執行(Ctrl R)即可。

測試例子(原始碼):

#include <opencv/highgui.h>  
int main( int argc, char** argv ) {  
IplImage* img = cvLoadImage( argv[1] );  
cvNamedWindow( "OpenCV", CV_WINDOW_AUTOSIZE );  
cvShowImage( "OpenCV", img );  
cvWaitKey(0);  
cvReleaseImage( &img );  
cvDestroyWindow( "OpenCV" );  
return ( 0 );  
} 

     編譯完成後,在可執行檔案所在的目錄執行./OpenCV lena\(1\).tiff,效果如圖8所示:

    備註:如果在Linux下面使用cvCaptureFromFile( )、cvCaptureFromAVI等函式不能夠開啟視訊,這是因為統解碼器的問題。我們只需要安裝ffmpeg解碼器(注意在執行./configure命令的時候一定要加上“—enable-shared”引數,不然OpenCV將找不到ffmpeg庫,如本人使用的命令為“./configure –enable-shared
–enable-gpl”)。Ubuntu下也可以開啟任意一個視訊檔案(或者在Ubuntu軟體中心),將gstreamer的plugins通通裝上。具體方法請問谷哥度娘,這裡不做贅述。在Ubuntu下用OpenCV播放視訊效果如圖7所示:

相關程式碼如下:

#include <opencv/cv.h>  
#include <opencv/highgui.h>  
int  main( int argc, char **argv )  
{  
cvNamedWindow( "Video", CV_WINDOW_FULLSCREEN );  
CvCapture *capture = cvCreateFileCapture( argv[ 1 ] );  
IplImage *frame;  
while (1) {  
frame = cvQueryFrame( capture );  
if ( !frame )  
break;  
cvShowImage( "Video", frame );  
char c = cvWaitKey( 33 );  
if ( c == 27 )  
break;  
}  
cvReleaseCapture( &capture );  
cvDestroyWindow( "Video" );  
return ( 0 );  
}  

附錄:
1. Ubuntu中開啟終端的方法:
法1. (當然是笨方法了),依次開啟(應用程式-附件-終端),如果閒的麻煩,可以直接把它新增面板,這樣也方便點。
法2.首先按住Alt,然後按一下F2,出來一個執行框,在裡面輸入 gnome-terminal即可執行。在這個執行框裡,可以執 行很多命令,想當於Windows的[執行](Windows R鍵),不過很難記住。
法3. 可以把終端視窗開啟放在滑鼠右鍵,效果是在桌面或資料夾內的空白處右鍵點選,將出現“從終端開啟”的快捷方式。那個需要使用一個軟體。安裝很簡單,開啟終端,在裡面輸入以下命令:

相關文章

程式語言 最新文章