OpenCV On Raspberry Pi #Day_3
Configure the OpenCV environment
在本篇文章中,我們將在Raspberry Pi3上配置帶有python3.5的OpenCV3.4.1環境。
第三天的學習內容難度較大,而且在OpenCV編譯的過程很漫長,所以建議大家仔細耐心的看好每一步和每一個操作,避免在配置環境中出現錯誤導致需要重新配置環境
Step 0:拓展檔案系統
樹莓派預設沒有使用SD卡上的所有儲存空間,所以如果不拓展檔案系統,在安裝大型軟體是會提示空間不足安裝錯誤。
首先在終端內輸入以下命令進入系統設定:
~ $ sudo raspi-config
然後按如下順序選擇:
Advanced Options > A1 Expand filesystem > "Enter"鍵確認
此時會提示一條訊息“The root partition has been resized”,即根分割槽已調整大小。使用以下命令可以看到儲存空間的變化:
~ $ df -h
之後重啟樹莓派:
~ $ sudo reboot
Step 1:釋放一些儲存空間
由於OpenCV庫非常大,幾乎有5G之多,所以要保證儲存空間充足,推薦使用16G或16G以上的SD卡。
現在我們刪除一些不必要的應用以節省儲存空間:
~ $ sudo apt-get purge wolfram-engine
~ $ sudo apt-get purge libreoffice*
~ $ sudo apt-get clean
~ $ sudo apt-get autoremove
Step 2:安裝依賴包
首先更新並升級所有現有軟體包
~ $ sudo apt-get update
~ $ sudo apt-get upgrade
之後重啟樹莓派:
~ $ sudo reboot
重啟之後開啟終端,按照如下步驟安裝相關軟體和依賴包:
~ $ sudo apt-get install build-essential cmake pkg-config
~ $ sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
~ $ sudo apt-get libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
~ $ sudo apt-get libxvidcore-dev libx264-dev
~ $ sudo apt-get libgtk2.0-dev libgtk-3-dev
~ $ sudo apt-get install libatlas-base-dev gfortran
注意:如果安裝過程中有報錯的話就一個一個的分開安裝,有些依賴項的最新版本肯能會改名字。當出現說已安裝更高版本的提示或者是已安裝最新版本時則可以跳過此依賴項
Step 3:安裝Python3、numpy庫和相關依賴
安裝Python3和numpy
~ $ sudo apt-get install python3 python3-setuptools python2.7-dev python3-dev
~ $ wget https://bootstrap.pypa.io/get-pip.py
~ $ sudo python get-pip.py
~ $ sudo python3 get-pip.py
~ $ sudo pip3 install numpy scipy
Step 4:下載OpenCV3.4.1和OpenCV contrib額外模組
使用以下命令下載OpenCV3.4.1和OpenCV contrib額外模組:
~ $ cd ~
~ $ wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.4.1.zip
~ $ unzip opencv.zip
~ $ wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.4.1.zip
~ $ unzip opencv_contrib.zip
Step 5:編譯並安裝適用於Python3的OpenCV3.4.1
使用cmake進行編譯
~ $ cd opencv-3.4.1
~/opencv-3.4.1 $ mkdir build
~/opencv-3.4.1 $ cd build
~/opencv-3.4.1/build $ cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.4.1/modules \
-D BUILD_EXAMPLES=ON ..
Step 6:交換空間大小獲得更多虛擬記憶體
交換空間大小後可以使用樹莓派四個核心一起編譯而不會出現記憶體問題。
開啟 /etc/dphys-swapfile,並修改CONF_SWAPSIZE引數:
~/opencv-3.4.1/build $ sudo vim /etc/dphys-swapfile
之後按“i”鍵進入輸入模式,修改CONF_SWAPSIZE引數為1024:
# set size to absolute value, leaving empty (default) then uses computed value
# you most likely don't want this, unless you have an special disk situation
# CONF_SWAPSIZE=100
CONF_SWAPSIZE=1024
修改完後按“Esc”鍵推出輸入模式,之後輸入“:wq!”儲存並退出。
然後通過以下命令使其生效:
~/opencv-3.4.1/build $ sudo /etc/init.d/dphys-swapfile stop
~/opencv-3.4.1/build $ sudo /etc/init.d/dphys-swapfile start
Step 7:進行編譯
使用四個核心編譯:
~/opencv-3.4.1/build $ make -j4
Step 8:使用單核進行編譯
如果由於記憶體問題而在編譯時遇到任何錯誤,則可以使用以下命令僅使用一個核心再次編譯:
~/opencv-3.4.1/build $ sudo make clean
~/opencv-3.4.1/build $ sudo make
Step 9:安裝構建
編譯構建後,使用以下命令安裝構建:
~/opencv-3.4.1/build $ sudo sudo make install
~/opencv-3.4.1/build $ sudo ldconfig
Step 10:驗證OpenCV構建
執行make install後,OpenCV + Python繫結應安裝在/usr/local/lib/python3.5/dist-packages或usr/local/lib/python3.5/site-packages中。
當你你需要使用OpenCV庫的時候你需要知道它的安裝位置,在我的樹莓派中,它是在dist-packages裡。
可以使用ls命令來確認OpenCV庫所安裝的位置:
~ $ ls -l /usr/local/lib/python3.5/dist-packages/
你要尋找像cv2.so這樣的名字,如果它不存在,那麼就找一個像cv2.cpython-35m-arm-linux-gnueabihf.so這樣的名字(名字以cv2開頭,以.so結尾),這是因為可能由於Python3的Python繫結庫中的一些錯誤而發生。
~ $ cd /usr/local/lib/python3.5/dist-packages/
/usr/local/lib/python3.5/dist-packages/ $ sudo mv /usr/local/lib/python3.5/dist-packages/cv2.cpython-35m-arm-linux-gnueabihf.so cv2.so
Step 11:測試OpenCV安裝是否成功
[email protected]:~ $ python3
Python 3.5.3 (default, Jan 19 2017, 14:11:04)
[GCC 6.3.0 20170124] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'3.4.1'
如果此處沒有問題則說明安裝成功。
Step 12:刪除OpenCV壓縮包
~ $ cd ~
~ $ rm opencv.zip opencv_contrib.zip
Step 13:交換回空間
開啟你的/etc/dphys-swapfile檔案並修改CONF_SWAPSIZE引數:
~ $ sudo vim /etc/dphys-swapfile
將檔案內的CONF_SWAPSIZE引數修改回100:
# set size to absolute value, leaving empty (default) then uses computed value
# you most likely don't want this, unless you have an special disk situation
CONF_SWAPSIZE=100
修改完後按“Esc”鍵推出輸入模式,之後輸入“:wq!”儲存並退出。
然後通過以下命令使其生效:
~ $ sudo /etc/init.d/dphys-swapfile stop
~ $ sudo /etc/init.d/dphys-swapfile start
Step 14:結束
至此,OpenCV的環境配置就算完成了。使用OpenCV做計算機影象處理還需要學習其他很多東西,包括numpy庫、Picamera庫和計算機視覺原理等內容,在之後的文章中我會主要講解樹莓派做計算機視覺的應用和各種處理方法,以上內容請自行學習,相關的官網內都會有教程,同時我也在翻譯OpenCV的學習手冊,希望大家多多關注!