1. 程式人生 > 實用技巧 >ubuntu 18.04 安裝opencv3.4.5+opencv_contrib

ubuntu 18.04 安裝opencv3.4.5+opencv_contrib

此文轉載自:https://blog.csdn.net/qq_49848470/article/details/110406099#commentBox

ubuntu 18.04 安裝opencv3.4.5+opencv_contrib

Ubuntu18.04安裝opencv-3.4.5及opencv-contrib
自己也已經安裝過很多遍opencv了,自己總結一下吧

安裝包下載

注意 opencv與opencv-contrib的版本應該一致
opencv 下載
opencv官網
opencv_contrib 下載 github
這裡需要下載opencv的source,opencv_contrib可以下載zip或者tar.gz,但本文下載的是zip

安裝依賴包

sudo apt-get update
sudo apt-get upgrade
//依賴包
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 install qt5-default ccache libv4l-dev libavresample-dev libgphoto2-dev libopenblas-base libopenblas-dev doxygen openjdk-8-jdk pylint libvtk6-dev sudo
apt-get install pkg-config

在上述依賴庫安裝完成之後才能開始後續操作。在對上述程式碼複製時最好一次一句地複製,否則無法安裝,終端中會直接跳過,在選擇Y/n時無法選擇Yes。

可能遇到的問題

其中可能遇見無法安裝libjasper-dev的問題,類似下面的頁面

XXX@XXX:~/Files/opencv-3.1.0$ sudo apt-get install libjasper-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate
package libjasper-dev

解決方案

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev

其中libjasper1是libjasper-dev的依賴包,然後再次安裝

sudo apt install libjasper1 libjasper-dev

安裝opencv和opencv_contrib

先解壓下載的opencv和opencv_contrib包,建議直接將下載下來的包直接放至home地址下,這樣,zip格式的解壓程式碼如下:

sudo unzip opencv-3.4.5.zip
sudo unzip opencv_contrib-3.4.5.zip

tar.gz格式解壓程式碼:

sudo tar zxvf opencv_contrib-3.4.5.tar.gz

然後將解壓後的contrib檔案移動至opencv-3.4.5檔案下

sudo cp -r opencv_contrib-3.4.5 opencv-3.4.5

並在opencv-3.4.5資料夾中新建build資料夾用於後續編譯和生成。

cd opencv-3.4.5                               #進入opencv資料夾
sudo mkdir build                              #建立build資料夾方便後續操作

進入bulid資料夾並進行第一次cmake

cd build
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=~/opencv-3.4.5/opencv_contrib-3.4.5/modules/ -D OPENCV_ENABLE_NONFREE=True ..

注意**-DOPENCV_ENABLE_NONFREE=True**別把-D與OPENCV_ENABLE_NONFREE=True分開,這句就是使用nonfree模組,包括sift等有專利權的模組。
注意後面的兩點不可省略,代表其他引數預設。
注意 OPENCV_EXTRA_MODULES_PATH 代表你放置opencv_contrib的modules資料夾的真實地址,如果直接將opencv放在home下那地址與上述引數相同,只需要注意版本號即可。

可能遇到的問題

ippicv和face_landmark_model.dat下載失敗的解決方案

1 先下載檔案

,檔案的下載地址可以在提示檔案//中找到,直接去該地址下載。或者用百度雲下載,連結
連結:
ippcv 提取碼:wjl1
連結:fippicv和face_landmark_model.dat提取碼:wjl1

2 修改相應的檔案

開啟

自己的地址/opencv-3.4.5/3rdparty/ippicv/ippicv.cmake

做以下修改。 將ippicv.cmake檔案下的第47行替換為本地路徑

"改為相應地址"           #本地路徑,與你自己下載存放的地址相關
#"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"      #原下載地址
#記得改為本地ippcv的地址

更改完ippicv之後,再更改face_landmark_model配置檔案,方法大致相同
同樣開啟

/本地地址/opencv-3.4.5/opencv_contrib-3.4.5/modules/face/CMakeLists.txt

然後將CMakeLists.txt檔案的第19行修改為本地路徑,即將原來的網址修改為下載的檔案儲存的路徑。這個行數不定,與檔案相關,主要是找到網址地址。

"本地地址"     #本地路徑,與你自己下載存放的地址相關
#"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${__commit_hash}/"          #原下載地址
# 記得改為本地face_landmark_model.dat的地址

這樣, ippicv和face_landmark_model.dat下載失敗的問題就得以解決。
生成完畢後會生成如下的類似介面

--   Install path:                  /usr/local
-- 
--   cvconfig.h is in:              /home/files/opencv-3.4.5/build
-- -----------------------------------------------------------------
-- 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/files/opencv-3.4.5/build

然後進行make

sudo make -j8   #j後面的數字代表用幾個執行緒編譯,此為8執行緒

然後大概率會出現以下錯誤
fatal error: boostdesc_bgm.i: vgg_generated_80. vgg_generated_120.i沒有那個檔案或目錄

這個問題是一堆檔案的缺失,包括
boostdesc_bgm.i
boostdesc_bgm_bi.i
boostdesc_bgm_hd.i
boostdesc_lbgm.i
boostdesc_binboost_064.i
boostdesc_binboost_128.i
boostdesc_binboost_256.i
vgg_generated_120.i
vgg_generated_64.i
vgg_generated_80.i
vgg_generated_48.i
所以只需要將這些檔案下載然後放置到opencv_contrib/modules/xfeatures2d/src/ 路徑下即可。
當然,這些檔案的下載路徑可以在cmake//日誌中檢視,直接複製其下載地址到網頁可以看該到檔案的原始碼,直接拷貝原始碼並生成同名檔案然後放置到opencv_contrib/modules/xfeatures2d/src/ 路徑下即可。
或者從百度網盤中下載,然後解壓並將這些檔案放置到opencv_contrib/modules/xfeatures2d/src/ 路徑下即可。
連結
密碼: a2c1
這些問題解決之後,還會遇見最後一個問題,就是opencv的stitiching模組中對xfeatures2d的呼叫地址問題。
opencv安裝opencv_contrib出現無法開啟包括檔案: “opencv2/xfeatures2d/cuda.hpp”的解決方法:
這裡比較簡單的就是直接改掉標頭檔案

解決辦法: 在CMakeLists.txt增加以下內容: INCLUDE_DIRECTORIES("/works/opencv-3.4.0/opencv_contrib-3.4.0/modules/xfeatures2d/include") 
CMakeLists.txt檔案所在路徑為: <你的路徑>/opencv-3.4.0/modules/stitching/ CMakeLists.txt 

解決完這些錯誤,可以繼續

sudo make -j8

只要成功到達100即為成功

sudo make install

到達這一步opencv安裝成功

配置環境變數

開啟檔案

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

在空白文件中新增

/usr/local/lib

接下來配置庫

sudo ldconfig

更改環境變數

sudo gedit /etc/bash.bashrc

在檔案的最後新增

export PKG_CONFIG_PATH=/usr/local/opencv/lib/pkgconfig 
export LD_LIBRARY_PATH=/usr/local/opencv/lib 

測試

使用qt ,這個比較簡單,也方便
如圖,需要注意以下pro檔案的寫法。
執行成功開啟攝像頭即為成功