在ubuntu18.04中安裝opencv_contrib-3.2.0採坑教程
由於最近要在OpenCV3中使用SIFT和SURF特徵提取,而自從OpenCV2升級到OpenCV3版本後,SIFT、SURF等這些演算法都被移出opencv預設專案庫,而被放到叫opencv_contrib的專案庫。因此需要手動下載opencv和opencv_contrib的原始碼,然後將兩個原始碼放在一起手動編譯安裝。
由於我的電腦是VMware虛擬機器跑的ubuntu18.04,並且ubuntu18.04中安裝了ROS-melodic,而ROS-melodic裝完後預設就把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版本。下面我列出了我的環境:
- VMware虛擬機器
- 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.安裝相關依賴
在編譯和安裝opencv原始碼之前,需要先安裝相關依賴庫,安裝命令如下:
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
上面命令執行會報錯,錯誤說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編譯引數
(1)安裝cmake-gui工具
在正式編譯opencv原始碼之前,需要對opencv中的CMake引數做設定,推薦用cmake-gui工具配置。先安裝cmake-gui工具,如下命令:
sudo apt-get install cmake-gui
(2)設定cmake引數
開啟終端,輸入下面的命令,啟動cmake-gui工具:
cmake-gui
在開啟的介面中,將where is the source code欄中設成opencv-3.2.0的路徑,將where to build the binaries欄中設成opencv-3.2.0/build的路徑,如下圖所示。
然後點選Configure按鈕,進行配置。配置過程會報錯誤,錯誤說缺vgg_generated_48.i之類的,解決辦法是直接去網上下載vgg_generated_48.i這個檔案,下載地址如下:
https://download.csdn.net/download/u013085286/10309843
下載好vgg_generated_48.i後,將這個檔案複製到報錯中提示的路徑下就行了。以我的路徑為例,用下面的命令複製:
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根據你實際報錯提示為準,類似的缺這些檔案的錯誤,去網上下對應的檔案,同樣的方法解決就行了。
補齊了這些檔案後, 然後再次點選Configure按鈕,進行配置,應該就能正常配置了。
(3)設定cmake編譯引數
在介面中將一下幾個引數的取值設定好,具體引數和取值如下所示:
CMAKE_BUILD_TYPE引數取值Release,如下圖所示。
OPENCV_EXTRA_MODULES_PATH引數取值/home/ubuntu1804/Downloads/opencv_contrib-3.2.0/modules,這個路徑的前面幾個資料夾用你的實際路徑替代,如下圖所示。
CMAKE_INSTALL_PREFIX引數取值/usr/local,如下圖所示。
這裡需要特別提一下,還需要將ENABLE_PRECOMPILED_HEADERS引數取值設成OFF。如果不關閉這個引數的話,後面編譯會報錯誤/usr/include/c++/7/cstdlib:75:15:fatal error:stdlib.h:No such file or direct.
上面這些編譯引數都設定好後,就可以點選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
當你執行完上面命令的時候,並看到100%的時候,恭喜你!安裝成功!
&n