1. 程式人生 > >樹莓派安裝openCV的過程及出現的問題的解決辦法

樹莓派安裝openCV的過程及出現的問題的解決辦法

1.開啟Raspbain終端(Ctrl + Alt +t),

2.依次執行下列命令

//軟體源更新
sudo apt-get update 
//升級本地所有安裝包,最新系統可以不升級,版本過高反而需要降級才能安裝
sudo apt-get upgrade
//升級樹莓派韌體,韌體比較新或者是Ubuntu則不用執行
sudo rpi-update
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3.安裝構建OpenCV的相關工具:

//安裝build-essential、cmake、git和pkg-config
sudo apt-get install build-essential cmake git pkg-config 
  • 1
  • 2

4.安裝常用影象工具包:

//安裝jpeg格式影象工具包
sudo apt-get install libjpeg8-dev 
//安裝tif格式影象工具包
sudo apt-get install libtiff5-dev 
//安裝JPEG-2000影象工具包
sudo apt-get install libjasper-dev 
//安裝png影象工具包
sudo apt-get install libpng12-dev 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

5.安裝視訊I/O包(注意最後一個包的數字“4”後面是“L”):

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
  • 1

6.安裝gtk2.0(樹莓派很可能下載錯誤,更換中科大或者清華源)

sudo apt-get install libgtk2.0-dev
  • 1

優化函式包:

sudo apt-get install libatlas-base-dev gfortran
  • 1

執行到這裡就把OpenCV的依賴包全部安裝好了

7.開始編譯OpenCV原始碼了(此過程非常漫長,大家可以做點其他的),請大家到https://github.com/opencv/opencv/releases 下載OpenCV的原始碼tar.gz格式,放到使用者目錄下(極可能會出現原始碼包在下載過程中被破壞)

gzip: stdin: unexpected end of file

tar: Unexpected EOF in archive

tar: Unexpected EOF in archive

tar: Error is not recoverable: exiting now

解決:換個地址下載或者是用git工具clone到所需目錄下,git命令如下:(推薦大家使用)
wget git clone https://github.com/opencv/opencv.git
  • 1
  • 2

補充:用git下載可能會遇到問題(沒有這個問題的此步可以跳過)

error:RPC fsiled;curl18 trsnsfer closed with outstanding data remaining

fatal:The remote end hung up unexpectedly

fatal:early EOF

fatal:index-pack failed.

解決辦法:

  1. git config --global http.postBuffer-524288000
  2. git config --list

git方式下載的資料夾名應該是opencv。

cd opencv
  • 1
  • 2

8.之後我們新建一個名為release的資料夾用來存放cmake編譯時產生的臨時檔案:

//新建release資料夾
mkdir release
//進入release資料夾
cd release
  • 1
  • 2
  • 3
  • 4

9.設定cmake編譯引數,安裝目錄預設為/usr/local:

//CMAKE_BUILD_TYPE是編譯方式,CMAKE_INSTALL_PREFIX是安裝目錄
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local ..
  • 1
  • 2
  • 3

10.開始正式編譯過程:

//編譯
sudo make
//安裝
sudo make install
//更新動態連結庫
sudo ldconfig
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

11.opencv已經編譯完成,已經可以正常使用了,下面我提供一個Python語言的測試程式,用來測試OpenCV是否正常:

# -*- coding:utf-8 -*-
import cv2
import numpy as np
cv2.nameWindow("gray")
img = np.zeros((512,512),np.uint8)#生成一張空的灰度影象
cv2.line(img,(0,0),(511,511),255,5)#繪製一條白色直線
cv2.imshow("gray",img)#顯示影象
#迴圈等待,按q鍵退出
while True:
    key=cv2.waitKey(1)
    if key==ord("q"):
        break
cv2.destoryWindow("gray")