在ubuntu18.04中安裝opencv_contrib-3.2.0采坑教程
在ubuntu18.04中安裝opencv_contrib-3.2.0采坑教程
溫馨提示
由于最近要在OpenCV3中使用SIFT和SURF特征提取,而自從OpenCV2升級到OpenCV3版本后,SIFT、SURF等這些算法都被移出opencv默認(rèn)項目庫,而被放到叫opencv_contrib的項目庫。因此需要手動下載opencv和opencv_contrib的源碼,然后將兩個源碼放在一起手動編譯安裝。
由于我的電腦是VMware虛擬機(jī)跑的ubuntu18.04,并且ubuntu18.04中安裝了ROS-melodic,而ROS-melodic裝完后默認(rèn)就把opencv-3.2.0版本順帶安裝好了。所以,為了與ROS-melodic里面自帶的opencv-3.2.0版本保持一致,我是下載了opencv-3.2.0和opencv_contrib-3.2.0源碼,手動編譯與安裝,來覆蓋ROS-melodic里面自帶的opencv-3.2.0版本。下面我列出了我的環(huán)境:
- VMware虛擬機(jī)
- ubuntu18.04
- opencv-3.2.0
- opencv_contrib-3.2.0
1.下載opencv-3.2.0和opencv_contrib-3.2.0源碼
去github下載就行了,下載地址如下:
- opencv-3.2.0下載地址: https://github.com/opencv/opencv/tree/3.2.0
- opencv_contrib-3.2.0下載地址: https://github.com/opencv/opencv_contrib/tree/3.2.0
下載好后將這兩個文件同時解壓到同個文件夾下,我是解壓在opencv_install這樣一個文件夾,如下圖所示。

2.安裝相關(guān)依賴
在編譯和安裝opencv源碼之前,需要先安裝相關(guān)依賴庫,安裝命令如下:
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
上面命令執(zhí)行會報錯,錯誤說libjaster-dev無法安裝,解決辦法如下:
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main" sudo apt update sudo apt install libjasper1 libjasper-dev
3.用cmake-gui工具配置opencv編譯參數(shù)
(1)安裝cmake-gui工具
在正式編譯opencv源碼之前,需要對opencv中的CMake參數(shù)做設(shè)置,推薦用cmake-gui工具配置。先安裝cmake-gui工具,如下命令:
sudo apt-get install cmake-gui
(2)設(shè)置cmake參數(shù)
打開終端,輸入下面的命令,啟動cmake-gui工具:
cmake-gui
在打開的界面中,將where is the source code欄中設(shè)成opencv-3.2.0的路徑,將where to build the binaries欄中設(shè)成opencv-3.2.0/build的路徑,如下圖所示。

然后點(diǎn)擊Configure按鈕,進(jìn)行配置。配置過程會報錯誤,錯誤說缺vgg_generated_48.i之類的,解決辦法是直接去網(wǎng)上下載vgg_generated_48.i這個文件,下載地址如下:
https://download.csdn.net/download/u013085286/10309843
下載好vgg_generated_48.i后,將這個文件復(fù)制到報錯中提示的路徑下就行了。以我的路徑為例,用下面的命令復(fù)制:
cp vgg_generated_48.i /home/ubuntu1804/Downloads/opencv_install/opencv_contrib-3.2.0/modules/xfeatures2d/cmake/.download/e8d0dcd54d1bcfdc29203d011a797179/vgg_generated_48.i
上面命令中路徑里面的e8d0dcd54d1bcfdc29203d011a797179根據(jù)你實(shí)際報錯提示為準(zhǔn),類似的缺這些文件的錯誤,去網(wǎng)上下對應(yīng)的文件,同樣的方法解決就行了。
補(bǔ)齊了這些文件后, 然后再次點(diǎn)擊Configure按鈕,進(jìn)行配置,應(yīng)該就能正常配置了。
(3)設(shè)置cmake編譯參數(shù)
在界面中將一下幾個參數(shù)的取值設(shè)置好,具體參數(shù)和取值如下所示:
CMAKE_BUILD_TYPE參數(shù)取值Release,如下圖所示。

OPENCV_EXTRA_MODULES_PATH參數(shù)取值/home/ubuntu1804/Downloads/opencv_contrib-3.2.0/modules,這個路徑的前面幾個文件夾用你的實(shí)際路徑替代,如下圖所示。

CMAKE_INSTALL_PREFIX參數(shù)取值/usr/local,如下圖所示。

這里需要特別提一下,還需要將ENABLE_PRECOMPILED_HEADERS參數(shù)取值設(shè)成OFF。如果不關(guān)閉這個參數(shù)的話,后面編譯會報錯誤/usr/include/c++/7/cstdlib:75:15:fatal error:stdlib.h:No such file or direct.

上面這些編譯參數(shù)都設(shè)置好后,就可以點(diǎn)擊Generate按鈕,生成makefile文件。
4.編譯和安裝opencv
切換到opencv-3.2.0/build目錄,用make和make install編譯和安裝就行了。
cd ~/Downloads/opencv_install/opencv-3.2.0/build/ make sudo make install
當(dāng)你執(zhí)行完上面命令的時候,并看到100%的時候,恭喜你!安裝成功!
參考文獻(xiàn)
[1] 張虎,機(jī)器人SLAM導(dǎo)航核心技術(shù)與實(shí)戰(zhàn)[M]. 機(jī)械工業(yè)出版社,2022.


浙公網(wǎng)安備 33010602011771號