1. 程式人生 > >Ubuntu16.04 + 原始碼編譯OpenCV3.4.2

Ubuntu16.04 + 原始碼編譯OpenCV3.4.2

Ubuntu16.04 + 原始碼編譯OpenCV3.4.2

版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/qq_26239525/article/details/83059905

ubuntu基本環境配置請參考:
Ubuntu16.04 + cuda9.0 + cudnn_v7 + tensorflow-gpu + opencv3.4.2: https://blog.csdn.net/qq_26239525/article/details/82714116

OpenCV3.4.2原始碼下載:
https://codeload.github.com/opencv/opencv/zip/3.4.2

opencv_contrib-3.4.2.tar.gz下載:
https://codeload.github.com/opencv/opencv_contrib/tar.gz/3.4.2

ippicv_2017u3_lnx_intel64_general_20180518.tgz下載:
https://github.com/opencv/opencv_3rdparty/tree/ippicv/master_[日期]/ippicv
比如我要用的3.4.2要求20180518這個版本,直接把[日期]替換成20180518即可,如下:
https://github.com/opencv/opencv_3rdparty/tree/ippicv/master_20180518/ippicv

face_landmark_model.dat下載:
https://raw.githubusercontent.com/opencv/opencv_3rdparty/8afa57abc8229d611c4937165d20e2a2d9fc5a12/face_landmark_model.dat

安裝過程:

1. 先安裝依賴庫 libgtk2.0-dev 和 pkg-config,否則後期編譯會出現如下的問題:

The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support.
If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script)
sudo apt-get install libgtk2.0-dev
sudo apt-get install pkg-config

2. 安裝依賴庫:

sudo apt-get install build-essential
sudo apt-get install cmake cmake-gui git 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 libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
sudo apt-get install libxvidcore-dev libx264-dev # 處理視訊所需的包
sudo apt-get install libatlas-base-dev gfortran # 優化opencv功能
sudo apt-get install ffmpeg

3. 安裝OpenCV

mkdir ~/opencv
# 將下載的檔案拷貝到opencv目錄下
unzip opencv-3.4.2.zip
tar zxvf 3.4.2.tar.gz

cd ~/opencv
mkdir opencv-3.4.2-build

# 將ippicv_2017u3_lnx_intel64_general_20180518.tgz檔案拷貝到~/opencv/opencv-3.4.2-build
# 終端輸入
sudo gedit ~/opencv/opencv-3.4.2/3rdparty/ippicv/ippicv.cmake

將47行的:
"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"
更換成:
"file:///home/x919/opencv/opencv-3.4.2-build"  # x919換成自己的使用者名稱
編輯完成,儲存退出。

在編譯過程中,由於需要從外網下載face_landmark_model.dat

所以需要將之前下載的face_landmark_model.dat放到到本地目錄下,以便於編譯過程從本地尋找檔案,加速安裝過程
sudo cp ~/下載/face_landmark_model.dat ~/opencv/opencv-3.4.2/.cache/data/
然後需要更改此face_landmark_model.dat檔案的名字
ls ~/opencv/opencv-3.4.2/.cache/data
應該是會有兩個檔案
cd ~/opencv/opencv-3.4.2/.cache/data
sudo cp face_landmark_model.dat 7505c44ca4eb54b4ab1e4777cb96ac05-face_landmark_model.dat
每臺機器應該不一樣

到此準備工作就完成了,然後開始安裝opencv3.4.2

# 終端輸入
cmake-gui

在這裡插入圖片描述

更改這兩個檔案路徑,然後點選configure,然後選擇Unix Makefiles,選擇Use default native compliers,然後點選Finish。

然後cmake就會載入預設配置。如下圖所示:

在這裡插入圖片描述

將CMAKE_BUILD_TYPE更改為Release。然後Search python3,將路徑更改為Anaconda下的python3下的路徑,如下圖所示:

在這裡插入圖片描述

將OPENCV_EXTRA_MODULES更改為以下路徑:

在這裡插入圖片描述

然後點選Generate生成配置檔案。

接下來進入opencv-3.4.2-build

cd ~/opencv/opencv-3.4.2-build

make -j8
sudo make install 
完成編譯安裝

然後配置系統環境變數:
sudo gedit /etc/ld.so.conf.d/opencv.conf

將以下內容新增進去:
/usr/local/lib

sudo ldconfig #配置庫
sudo gedit /etc/bash.bashrc
在檔案末尾加入:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig 
export PKG_CONFIG_PATH
儲存,然後關閉終端使配置生效。

測試:

import cv2 
img = cv2.imread('~/opencv入門/image.jpg',1)
cv2.imshow('image',img)
cv2.waitKey (0)
"libopencv_hdf.so.3.4: cannot open shared object file: No such file or directory"
如果報出此錯誤,則:
sudo find / -name "libopencv_hdf.so.3.4"

在這裡插入圖片描述

sudo gedit /etc/ld.so.conf.d/opencv.conf
將下句新增到檔案末尾:
/home/x919/opencv/opencv-3.4.2-build/lib
sudo ldconfig

重新測試即可正常顯示圖片。