ubuntu debug 版本opencv安裝

原文地址:http://blog.skyoung.org/2013/05/01/how-to-install-OpenCV-and-boost/



ubuntu 12.04 LTS下安裝OpenCV,Boost等常用庫

Contents
  1. OpenCV
  2. Boost
  3. Eigen
  4. libconfig
  5. 總結

最近在搞一個視覺的程序,要用到一些庫,就想着把這些庫的安裝細節記錄一下。其實以前也有弄過,只是一旦安裝好了,時間長了就容易忘記,特別是一些小細節的設置。如果碰上換電腦或是重裝系統,又得重新研究,所以這裏權當是個筆記,以備以後用到時查找。這裏主要介紹OpenCV,Boost,Eigen,libconfig這幾個庫的安裝和設置,其實過程很類似,但考慮到以後用起來省勁,這裏也不厭其煩的全部列出了。

OpenCV

OpenCV的安裝在官網上有個教程,但是按照那個教程總是會出現問題,不盡如人意,這裏記錄一個參考Installing OpenCV 2.4.1 in Ubuntu 12.04 LTS這篇博文的OpenCV的安裝教程備忘。我安裝的是OpenCV2.4.5,其他相近的版本方法應該也是類似。我們希望OpenCV能支持一些第三方的庫,如Qt,OpenGL,Python,TBB等,所以這裏需要提前安裝一些相應的依賴包,然後在cmake的時候做一些設置。

  1. 保證系統中各個軟件和軟件源都是更新過的,執行下面命令:

    #更新源
    $ sudo apt-get update 
    #更新已安裝的包
    $ sudo apt-get upgrade 
  2. 然後需要安裝一些依賴包,像用於圖像讀寫,攝像頭驅動之類的包(v4l),執行下面命令:

    $ sudo apt-get install build-essential libgtk2.0-dev libjpeg-dev libtiff4-dev libjasper-dev libopenexr-dev cmake python-dev python-numpy python-tk libtbb-dev libeigen2-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev libqt4-dev libqt4-opengl-dev sphinx-common texlive-latex-extra libv4l-dev libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev
  3. OpenCV官網下載源代碼,解壓後,進入相應的目錄文件夾。因爲我們希望OpenCV支持一些第三方庫,所以這裏需要設置一些東西,我們採用cmake的外部編譯方法,先新建一個build文件,然後進入該文件夾進行編譯。因爲OpenCV在debug和release兩種模式下生產的庫文件不盡相同,debug模式因爲添加了很多調試信息,文件大小相對會大一些,所以這裏分別編譯debug和release兩種模式下的OpenCV。 對於debug模式,執行如下命令:

    $ mkdir build
    $ cd build
    $ cmake -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D CMAKE_BUILD_TYPE=DEBUG -D CMAKE_INSTALL_PREFIX=/usr/local/OpenCV/Debug ..

    這裏有個地方需要注意,命令最後是兩個點,是上一層目錄的意思,因爲Cmakelist.txt在build的上層目錄中。安裝路徑通過CMAKE_INSTALL_PREFIX設置爲/usr/local/OpenCV/Debug,默認是/usr/local。而編譯類型通過CMAKE_BUILD_TYPE=DEBUG設爲DEBUG,默認是RELEASE。對於Release下的編譯,只需要更改這兩個部分即可,即:

    $ cmake -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/OpenCV/Release ..
  4. cmake結束後,檢查輸出的各個選項是否符合要求。特別注意FFMPEG(用於視頻的讀寫)和V4L(攝像頭的驅動),因爲這倆是我最常用的功能,我這裏特別點出。我的配置的結果如下圖:

  5. 編譯安裝OpenCV,命令如下:

    $ make
    $ sudo make install
  6. 設置庫的搜索路徑,在/etc/ld.so.conf.d/加入對於庫的.conf文件,首先新建opencv.conf

    $ sudo gedit /etc/ld.so.conf.d/opencv.conf

    opencv.conf中加入函數庫所在的目錄:

    /usr/local/OpenCV/Debug/lib
    /usr/local/OpenCV/Release/lib

    也可以在ld.so.conf文件中

    $ sudo gedit /etc/ld.so.conf

    加入上述目錄。其實ld.so.conf中寫着如下代碼:

    $ include /etc/ld.so.conf.d/*.conf

    說明ld.so.conf是包含ld.so.conf.d中所有的.conf文件的。

  7. 接下來利用ldconfig命令,將/etc/ld.so.conf.d中的數據讀入緩存,

    $ sudo ldconfig
  8. 然後添加pkg-config環境變量,便於pkg-config找到*.pc文件。因爲我們生成了兩個版本的OpenCV,爲了便於區分,分別把Debug和Release下lib/pkgconfig下對應的*.pc文件改名爲opencv-debugopencv-release。然後把這兩個路徑設置在環境變量中,

    $ sudo gedit /etc/profile

    把以下代碼寫入文件的最後並保持。

    export PKG_CONFIG_PATH=/usr/local/OpenCV/Debug/lib/pkgconfig:$PKG_CONFIG_PATH
    export PKG_CONFIG_PATH=/usr/local/OpenCV/Release/lib/pkgconfig:$PKG_CONFIG_PATH

或者,直接把這兩文件放到一起,然後放到某個位置,再把這個路徑設置到環境變量中。pkg-config的默認搜索路徑是/usr/local/lib/config,所以可以直接放在這個路徑下,無需設置環境變量。

這樣OpenCV的安裝就完成了,可以參考Using OpenCV with gcc and CMake中講解的OpenCV使用方法嘗試測試幾個簡單的程序試試。

使用動態庫的程序在運行的時候需要搜尋動態庫的位置,這裏第6-7步設置庫的搜索路徑就是爲了告訴程序動態庫的位置,以確保程序的正常運行。第8步的作用是告訴pkg-config工具*.pc文件的位置,以便pkg-config得到編譯預處理參數(宏定義,頭文件位置等)和鏈接參數(庫及依賴的庫的位置,文件名等),方便程序的編譯和鏈接。具體的理解可以參考這篇博客理解 pkg-config 工具

Boost

Boost的大部分文件是不需要編譯的,因爲都是頭文件,直接把頭文件複製到你想要的地方就可以了,然後使用的時候就把include頭文件鏈接到程序中就可以了。這裏着重講講需要編譯的部分,官方網站給出如下需要編譯的文件:

  • Boost.Filesystem
  • Boost.GraphParallel
  • Boost.IOStreams
  • Boost.MPI
  • Boost.ProgramOptions
  • Boost.Python (see the Boost.Python build documentation before building and installing it)
  • Boost.Regex
  • Boost.Serialization
  • Boost.Signals
  • Boost.System
  • Boost.Thread
  • Boost.Wave

而我正好用到Boost.Filesystem和Boost.System,所以要編譯,就把這個部分記錄一下。我主要參考的是官網中如下部分:Easy Build and Install

  1. 去官網下載Boost,解壓到某個目錄下,然後進入這個目錄,執行如下命令,查看一下命令選項的設置

    $ ./bootstrap.sh --help
  2. 設置boost的安裝路徑,比如/usr/local/boost-1.53.0,則命令如下:

    $ ./bootstrap.sh --prefix=/usr/local/boost-1.53.0
  3. 安裝boost

    $ ./b2 install
  4. 設置庫的路徑,和上面OpenCV一樣,有兩種方法,這裏選擇第一種:

    $ sudo gedit /etc/ld.so.conf.d/boost.conf

    加入函數庫目錄:

    /usr/local/boost-1.53.0/lib

這樣Boost的安裝就完成了,非常簡單。

Eigen

其實,Eigen也是隻有頭文件,直接複製到合適的地方就可以。還有一種方法是INSTALL文件提到的利用cmake的安裝的方法,這裏簡單介紹一下:

  1. 首先是外部編譯,建立新的文件夾build,設置安裝路徑,比如我的是/usr/local/Eigen-3.1.3

    $ mkdir build
    $ cd build
    $ cmake -D CMAKE_INSTALL_PREFIX=/usr/local/Eigen-3.1.3 ..
  2. 安裝Eigen到指定的路徑,由於沒有需要編譯的東西,就不需要make了。

    $ sudo make install

這樣Eigen就安裝結束了。

libconfig

libconfig沒有采用cmake構建makefile,而是有一個configure文件負責makefile的生成。具體步驟如下:

  1. 先輸入如下命令

    $ ./configure --help

    查看一下configure裏面的一些選項,看一看有沒有自己用得到的,其中常用的就是--prefix選項,用來設置安裝路徑的,假設我們設爲usr/local/libconfig-1.4.9,則

    $ ./configure --prefix=usr/local/libconfig-1.4.9
  2. 清除上一次編譯的目標文件,這一步不是必須的,但做了沒壞處,防止源代碼中存在上一次編譯的目標文件。

    $ make clean
  3. 編譯並安裝,

    $ make
    $ sudo make install
  4. 設置庫的路徑,

    $ sudo gedit /etc/ld.so.conf.d/libconfig.conf

    加入函數庫目錄:

    $ /usr/local/libconfig-1.4.9/lib

總結

總的來說,庫的安裝還是比較相似的,一般是通過cmake或者自帶的configure文件安裝。而且庫在發佈的時候,會在readme或者intall文件中大體闡述庫的安裝方法,也可以去官網查詢。具體思路一般就是先生成makefile,然後按照安裝軟件的方式安裝即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章