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
重新測試即可正常顯示圖片。