Opencv+opencv_contrib安裝


最近自己決定動手寫一個視覺slam程序,

 

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

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

一個成熟完整的程序展現的是bin lib include src等文件夾,但是不可能將整個構造過程統統展現出來,對於小白來說,很難理解整個項目的搭建過程是怎樣的,自己寫代碼,搭建項目的的時候可能仍是一頭霧水,因此可以借寫代碼熟悉整個編譯過程;

以后做改進,或者希望做框架的拓展時,也會更加得心應手;

 

話不多說,這一篇即是自己搭建slam程序遇到的第一個暗坑所做的總結;

做slam的第一步是從IO圖片或者視頻開始,我們很自然的要用到OpenCV,但是如果想要在opencv中使用sift算子,我們需要安裝extra_modules(Opencv_contrib)組件,

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

 

安裝Opencv和Opencv_contrib的時候要注意版本匹配,下面給出網址大家可以從里面挑選對應的版本:

https://github.com/opencv

溫馨提示:點擊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

 

這是遇到的所有問題,如果大家遇到了其他問題,歡迎一起討論;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM