Opencv+opencv_contrib安裝

最近本身決定動手寫一個視覺slam程序,html

 

寫代碼不只僅加深對slam實現原理的理解,同時提高使用cmake、kdevelop等工具的python

熟練度,這些是編譯大型項目的基礎;git

一個成熟完整的程序展示的是bin lib include src等文件夾,可是不可能將整個構造過程通通展示出來,對於小白來講,很難理解整個項目的搭建過程是怎樣的,本身寫代碼,搭建項目的的時候可能還是一頭霧水,所以能夠借寫代碼熟悉整個編譯過程;github

之後作改進,或者但願作框架的拓展時,也會更加駕輕就熟;算法

 

話很少說,這一篇便是本身搭建slam程序遇到的第一個暗坑所作的總結;ubuntu

作slam的第一步是從IO圖片或者視頻開始,咱們很天然的要用到OpenCV,可是若是想要在opencv中使用sift算子,咱們須要安裝extra_modules(Opencv_contrib)組件,框架

由於sift和surf是須要專利付費的算法,專利權隸屬於哥倫比亞大學,所以opencv3將一些不穩定的或須要專利付費的算法整理出了一個模塊,因此若是工業界的同窗們須要用這兩個算法的時候(竟然不用ORB?),要謹慎呀。工具

 

安裝Opencv和Opencv_contrib的時候要注意版本匹配,下面給出網址你們能夠從裏面挑選對應的版本:網站

https://github.com/opencvui

舒適提示:點擊opencv(or opencv_contrib)

 

 

點擊release,選擇你想要的版本:

 

 

 選擇須要的版本和文件(ubuntu下選擇源碼安裝)。

 

OpenCV contrib組件的下載一樣,兩者版本要匹配!

切記不要直接在opencv界面上選擇Clone and download,版本會是最新版本,和opencv_contrib不匹配;

 

卸載OpenCV

接下來咱們進去ubuntu;首先咱們須要先卸載安裝的opencv版本(也能夠選擇不卸載,這裏提供給你們卸載的方法,畢竟我還不清楚如何在ubuntu下實現opencv多版本共存):

 

1.徹底卸載opencv2

1.1.From repository,從軟件倉庫中安裝的opencv2

sudo apt-get purge libopencv* 

1.2.From source,使用cmake自行編譯安裝的opencv你

首進入原先編譯opencv2的build目錄,在該目錄下打開終端;再執行如下代碼。

sudo make uninstall

cd ..

sudo rm -r build

sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*

這一步可能有error,忽略之。最後執行以下操做:

sudo apt-get -purge remove opencv-doc opencv-data python-opencv

 

對一些error能夠無視,實現上述步驟,可進入/usr/local/include/下查看是否仍是有opencv文檔,若是沒有,說明已經卸載成功;

安裝OpenCV依賴項:

接下來咱們安裝opencv的依賴項;在ubuntu下的好處就是對於任何操做幾行指令就能夠完成,很是方便:

 

sudo apt-get install build-essential

sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

sudo apt-get update

至此,依賴項安裝完畢;

 

安裝OpenCV以及Opencv_contribe組件

下面咱們開始安裝opencv以及opencv_contrib組件:

首先將兩者解壓,若是選擇的是zip文檔解壓代碼爲

unzip opencv-3.4.1.zip

unzip opencv_contrib-3.4.1.zip

 

解壓後將opencv_contrib-3.4.1移動道opencv-3.4.1文檔目錄下;

進入opencv-3.4.1文檔,採用外部編譯的方式,輸入下列代碼:

mkdir build;

cd build;

關鍵是cmake的代碼,由於各位ubuntu的系統配置不盡相同,所以可使用下列比較通用的代碼:

cmake -D CMAKE_BUILD_TYPE=RELEASE \

    -DCMAKE_INSTALL_PREFIX=/usr/local/ \

    -DINSTALL_PYTHON_EXAMPLES=ON \

    -DINSTALL_C_EXAMPLES=ON \

    -DPYTHON_EXCUTABLE=/usr/bin/python \

    -DOPENCV_EXTRA_MODULES_PATH=/home/lxy/opencv/opencv-3.4.1/opencv_contrib-3.4.1/modules \

    -DWITH_CUDA=OFF \

    -DWITH_CUFFT=OFF \

    -DWITH_CUBLAS=OFF \

    -DWITH_TBB=ON \

    -DWITH_V4L=ON \

    -DWITH_QT=ON \

    -DWITH_GTK=ON \

    -DWITH_OPENGL=ON \

-DBUILD_EXAMPLES=ON ..

 

標紅行意味着是各位須要根據本身的opencv解壓後的文件目錄以及opencv_contrib文件目錄(你已經把它移動道opencv目錄下了)作更改;

注意最後兩個點不能省略(懂的天然懂,不懂的記得google呦),若是某些文檔沒有安裝,可本身選擇on 或者off選項,此處也有人採用cmake-gui來設置,可是實現懶的學,就先採用這種方式吧。

 

正常的話,便可進入編譯,此時輸入

make –j8

         -j8的意思是8核同時編譯,也意味着8個進程同時編譯(給非IT的我一點見識-、-)

        

         這個時候就會遇到各類各樣的問題了:

除了下面這個blog

http://www.cnblogs.com/klchang/p/7510526.html

 

可能遇到這種問題

問題1

      

 

這個時候很簡單,將contrib/modules/中的相關hpp文件移動到/usr/local/include下便可(花了我1-2個小時才明白這個道理),若是沒有opencv2 創建對應的文件夾,記得在/usr/local/include目錄下全部的操做都須要加sudo 權限

如創建opencv2文件夾:

sudo mkdir opencv2

 

如上述問題可採用

sudo cp –r <source-directory> <goal-directory>

相信這樣的操做你們必定能夠摸索成功

問題2

linemod問題,下面github上的一個哥們即把這個問題提出來,放在了網上,記得不須要加cv::只須要把#include <opencv2/rgbd/linemod.hpp>加到報錯的hpp中便可,若是出現如問題1的 no such file or directory,採起問題1的解決方式便可。因此說,認真分析bug信息,堅持google,咱們會不斷進步的(小N:師兄加油!!! )

https://github.com/opencv/opencv/issues/10844

 

問題3

若是出現關於build opencv_contribute fatal error boostdesc_bgm.i and vgg;

這個問題遇到的時候極爲難受,由於根本毫無頭緒,然而老是由大神給出答案,可參考opencv網站上的questions

http://answers.opencv.org/question/174456/about-build-opencv_contribute-fatal-error-boostdesc_bgmi-and-vgg/

我這裏直接也給出解決方式:

 

 

圖片中標藍的網址爲:

https://github.com/opencv/opencv_3rdparty/branches/stale

 

這是遇到的全部問題,若是你們遇到了其餘問題,歡迎一塊兒討論;

相關文章
相關標籤/搜索