最近文章

Raspberry Pi 筆記(二十一):安裝OpenCV

[2017/02/01]
過去兩年多來,將Raspberry Pi 束諸高閣,專心準備PMP考試,終於在2015/11/17通過了考試;可是一年多來,沒有繼續研究樹莓派的相關功能。直到最近看到幾篇OpenCV的文章,想來試試看如何在Raspberry Pi 上執行影像處理的功能,於是拿出塵封已久的 Pi 2 Model B,繼續研究,看看是否能做出影像辨識等功能。以下是安裝OpenCV的各階段步驟:

階段一:安裝套件
安裝好作業系統後,進行系統更新及升級,並重新開機:
$ sudo rpi-update
$ sudo apt-get update
$ sudo apt-get upgrade


重新啟動Raspberry Pi。

重新啟動系統後,安裝一些需要的編譯工具:
$ sudo apt-get install build-essential git cmake pkg-config

安裝影像 I/O 套件,包含JPEG, PNG, TIFF等所需套件,這個套件可以載入各種不同的影像檔案格式,如:JPEG, PNG, TIFF等。
$ sudo apt-get install libjpeg8-dev libtiff5-dev libjasper-dev libpng12-dev

註:安裝時出現以下錯誤:安裝 libtiff5-dev 前,需先安裝 libjpeg-dev

The following packages have unmet dependencies:
 libtiff5-dev : Depends: libjpeg-dev
E: Unable to correct problems, you have held broken packages.

安裝 video I/O 所需套件,使用OpenCV載入video檔案:
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
$ sudo apt-get install libxvidcore-dev libx264-dev

安裝 GTK 開發 library,這個 library用在建立使用者介面 (Graphical User Interfaces, GUIs),並可以編譯 OpenCV的  highgui 子模組,才能顯示影像在畫面上。
$ sudo apt-get install libgtk2.0-dev

各種不同的OpenCV如矩陣運作等的最佳化相依:
$ sudo apt-get install libatlas-base-dev gfortran

開始安裝 Python 2.7 開發工具:
$ sudo apt-get install python2.7-dev

階段二:下載 OpenCV
下載OpenCV 3,2,0版本,並解壓縮。
$ wget -O opencv-3.2.0.zip  https://sourceforge.net/projects/opencvlibrary/files/opencv-unix/3.2.0/opencv-3.2.0.zip/download
$ unzip opencv-3.2.0.zip
$ cd opencv-3.2.0

階段三:安裝設定 Python
安裝 pip :
$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python get-pip.py

pip是一個以Python電腦程式語言寫成的軟體包管理系統,他可以安裝和管理軟體包,另外不少的軟體包也可以在「Python軟體包索引」(英語:Python Package Index,簡稱PyPI)中找到。[維基百科]

安裝 virtualenv 及 virtualenvwrapper:
$ sudo pip install virtualenv virtualenvwrapper
$ sudo rm -rf ~/.cache/pip

更新個人的資料檔 ~/.profile,將以下三行加到.profile檔案最後面
# virtualenv and virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

重新載入個人的 .profile
$ source ~/.profile

為 Python 建立一個名為 cv 的虛擬環境
$ mkvirtualenv cv

安裝NumPy
$ pip install numpy

NumPy是Python語言的一個擴充程式庫。支援高階大量的維度陣列與矩陣運算,此外也針對陣列運算提供大量的數學函式函式庫。NumPy的前身Numeric最早是由Jim Hugunin與其它協作者共同開發,2005年,Travis Oliphant在Numeric中結合了另一個同性質的程式庫Numarray的特色,並加入了其它擴充功能而開發了NumPy。NumPy為開放原始碼並且由許多協作者共同維護開發。[維基百科]


階段四:編譯並安裝 OpenCV
設定環境:如果有重新啟動系統、Logout或開啟新的終端機,就需要再執行以下指令,來啟動虛擬環境。
$ workon cv

建立編譯程式環境:
$ cd ~/opencv-3.2.0/
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
   -D CMAKE_INSTALL_PREFIX=/usr/local \
   -D BUILD_NEW_PYTHON_SUPPORT=ON \
   -D INSTALL_C_EXAMPLES=ON \
   -D INSTALL_PYTHON_EXAMPLES=ON \
   -D BUILD_EXAMPLES=ON ..

開始編譯 OpenCV:
$ make -j4

參數 -j4 表示在編譯OpenCV階段使用Raspberry Pi 2的四核心處理器,以加快編譯速度。

註:筆者只要使用 -j4 這個參數,系統就會重新啟動,懷疑是因為 overclock的關係,關掉overclock之後,結果還是一樣,一執行就會重開機。還是使用不加參數的指令完成整個編譯工作,這個步驟大約需要 3小時,請耐心等待。

階段五:結束安裝
如果編譯階段沒有錯誤,OpenCV會安裝在 /usr/local/lib/python2.7/site-packages 目錄內,產生一個 cv2.so 的檔案。最後要將這個檔案建立連結到 cv 的虛擬環境。
$ cd ~/.virtualenvs/cv/lib/python2.7/site-packages/
$ ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so

步驟六:確認是否已安裝完成
如果要確認 OpenCV安裝完成,可重新登入或開啟新的終端機,輸入以下指令:
$ workon cv
$ python
>>> import cv2
>>> cv2.__version__
'3.2.0'

如果正確出現OpenCV的版本,就表示安裝成功。


[參考資料]

3 則留言:

  1. (cv) pi@raspberrypi:~/opencv-3.2.0/build $ cmake -D CMAKE_BUILD_TYPE=RELEASE
    CMake Error: The source directory "/home/pi/opencv-3.2.0/build/CMAKE_BUILD_TYPE= RELEASE" does not exist.
    Specify --help for usage, or press the help button on the CMake GUI.
    到建立編譯程式環境時出現error

    回覆刪除
    回覆
    1. 應該是將指令貼到Blog時漏掉了,謝謝指正!!

      刪除