樹莓派3B安裝編譯OpenCV3教程以及常見錯誤處理

近期把吃灰的樹莓派3B找了出來,想在上面運行opencv3,安裝編譯的過程當中走了不少彎路,參考網上衆多大佬的筆記,發現要麼不齊全,要麼教程老舊,不適用於新版系統,故寫下這篇博文以供你們參考,但願能幫助你們少走彎路。python

1、配置樹莓派

系統安裝和配置

關於樹莓派系統的安裝和初期配置網上教程不少,這裏再也不贅述。
本文配置環境爲:
git

更換更新源和下載源

sudo nano /etc/apt/sources.list

在第一行前輸入 # 註釋系統默認源
註釋系統默認源
在最後一行輸入如下代碼更換爲中科大鏡像

github

deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi
deb-src http://mirrors.ustc.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi

按ctrl+x進行保存退出bash

更換pip下載源

命令行輸入:網絡

sudo mkdir ~/.pip
cd .pip
sudo nano pip.conf

在打開的文件中輸入如下代碼ssh

[global]
timeout = 10
index-url =  http://mirrors.aliyun.com/pypi/simple/
extra-index-url= http://pypi.douban.com/simple/
[install]
trusted-host=
    mirrors.aliyun.com
    pypi.douban.com

按下ctrl+x保存退出函數

更新軟件系統

sudo apt-get update
sudo apt-get upgrade

擴展根目錄空間

在控制終端輸入工具

sudo raspi-config

經過鍵盤上下鍵控制,選擇7.Advanced Options進入,而後選擇Expand Filesystem,將根目錄擴展到整個SD卡,充分利用SD卡的存儲空間。若是不進行這一步,後續命令會出現卡死。
設置完成後退出設置界面,重啓樹莓派。
優化

sudo reboot

設置SWAP

OpenCV安裝編譯過程當中數據吞吐較大,爲了防止系統卡死,須要設置合適的交換空間。ui

sudo nano /etc/dphys-swapfile

將 CONF_SWAPSIZE 的值修改爲你想要的大小。 通常在內存小於2G的狀況下,交換分區應爲內存的2倍!
SWAP設置
而後,從新啓動 dphys-swapfile 文件服務:

sudo /etc/init.d/dphys-swapfile restart

輸入free -h查看是否設置成功
系統內存佔用

2、安裝運行在python2上的OpenCV

打開終端,輸入如下兩個命令便可完成安裝(第一條可能要花半小時左右完成)

sudo apt-get install libopencv-dev
sudo apt-get install python-opencv

安裝完成,輸入cv2.__version__便可查看OpenCV版本號
python2下OpenCv3

3、安裝python3下的OpenCV

一、安裝Python科學計算庫numpy

sudo pip3 install numpy

二、安裝OpenCV所需的庫

// 安裝build-essential、cmake、git和pkg-config(cmake開發人員工具)
sudo apt-get install build-essential git cmake pkg-config -y
//經常使用圖像工具包安裝
sudo apt-get install libjpeg8-dev -y
sudo apt-get install libtiff5-dev -y
sudo apt-get install libjasper-dev -y
sudo apt-get install libpng12-dev -y
//經常使用視頻庫安裝
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev -y
//GTk2.0安裝
sudo apt-get install libgtk2.0-dev -y
//安裝OpenCV數值優化函數包
sudo apt-get install libatlas-base-dev gfortran -y

3.下載opencv3.4.3和opencv_contrib3.4.3包

爲了方便後期管理,咱們把文件下載安裝到Downloads文件夾

cd Downloads

而後利用wget命令從網絡下載opencv3.4.3和opencv_contrib3.4.3

wget -O opencv-3.4.3.zip https://github.com/Itseez/opencv/archive/3.4.3.zip
wget -O opencv_contrib-3.4.3.zip https://github.com/Itseez/opencv_contrib/archive/3.4.3.zip

解壓這兩個文件

unzip opencv-3.4.3.zip
unzip opencv_contrib-3.4.3.zip

4.設置CMAKE編譯參數

爲了正確編譯OpenCV,須要對cmake參數進行設置。
①在opencv-3.4.3文件夾下建立build文件夾以存放編譯臨時文件

cd ~/Downloads/opencv-3.4.3
mkdir build
cd build

②設置cmake編譯參數

//下述參數中,INSTALL_PYTHON_EXAMPLES、INSTALL_CXX_EXAMPLES、BUILD_EXAMPLES分別是安裝python例程、安裝C例程以及編譯例程,這三個能夠不加,這樣編譯速度快一點,根據須要自行選擇。
sudo cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D OPENCV_EXTRA_MODULES_PATH=/home/pi/Downloads/opencv_contrib-3.4.3/modules \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D INSTALL_CXX_EXAMPLES=ON \
    -D BUILD_EXAMPLES=ON ..

③配置成功的界面以下圖所示
cmke設置成功

5.備份build文件夾

下一步咱們會利用build文件夾裏的文件進行make,一旦失敗還須要從新進行cmake參數設置。爲了節省時間,對build文件夾進行備份。

cd ..
cp -r build ./build1

6.編譯OpenCV3

進入build文件夾進行編譯,這一步耗時較長(大約四五個小時)。建議在樹莓派環境下進行,防止ssh斷開致使編譯失敗。同時樹莓派要保證供電充足,且最好不要進行其餘操做。

cd ~/Downloads/opencv-3.4.3/build
 //使用最多4線程編譯,加快編譯速度。同時保存編譯信息到make.log,方便離線查看編譯進度
 sudo make -j4 2>&1 | tee make.log

若是看到進度編譯到100%,那麼說明編譯安裝成功。
編譯成功
若是遇到中途出錯或者臨時斷電等問題,直接輸入以上命令繼續編譯便可。若是想從新進行編譯,能夠把路徑跳轉到咱們上面備份的build1文件夾進行編譯,也能夠輸入如下命令從新編譯

make clean
sudo make -j4 2>&1 | tee make.log

7.安裝OpenCV3

編譯完成後便可進行最後一步——安裝。

//安裝OpenCV3
sudo make install
//安裝動態連接庫
sudo ldconfig

安裝完成

8.恢復SWAP空間

安裝完成後須要把swap恢復系統默認,而後從新啓動服務。不然大量的數據交換會致使內存卡損壞

sudo nano /etc/dphys-swapfile
CONF_SWAPSIZE = 100
sudo /etc/init.d/dphys-swapfile restart

4、配置OpenCV

1.配置opencv.conf

爲了保證個別語言的編譯要求,須要對opencv.conf文件進行配置

sudo nano /etc/ld.so.conf.d/opencv.conf

在打開的文件最後兩行鍵入如下內容

//其中,/usr/local爲默認安裝路徑,根據實際狀況進行修改便可
/usr/local/lib
?

更新動態連接

sudo ldconfig

2.修改bash.bashrc 配置文件

//打開bash.bashrc
sudo nano /etc/bash.bashrc
//最後兩行加入如下代碼
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig       
export PKG_CONFIG_PATH
//重啓樹莓派
sudo reboot

3.檢查是否安裝完成

python3
import cv2
cv2.__version__

若是出現如圖所示的結果,則說明安裝成功
python3 Opencv3
也能夠經過運行如下代碼生成一個圖像來檢測OpenCV是否工做正常

touch test.py
nano test.py

import cv2
import numpy as np
cv2.namedWindow("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")

python3 test.py

最終的結果應該是生成一個空的灰度圖像,圖像中間有一條白色直線。以下圖所示
opencvtest
搞定!ENJOY!!

5、編譯中可能會出現的問題(沒出現忽略)

一、編譯過程當中可能會報錯**:fctal error: ImfChromaticities.h: 沒有那個文件或目錄。**
輸入如下代碼能夠解決

sudo apt-get install libopenexr-dev

2.編譯18%左右可能會報錯fatal error: opencv2/xfeatures2d/cuda.hpp: 沒有那個文件或目錄
這是因爲咱們以前安裝了python2環境下的opencv致使的,複製兩個文件便可解決:
將/home/pi/Downloads/opencv_contrib-3.4.3/modules/xfeatures2d/include/opencv2目錄下的xfeatures2d文件夾和xfeatures2d.hpp文件複製粘貼到/home/pi/Downloads/opencv-3.4.3/modules/stitching/include/opencv2目錄下便可
文件也能夠從連接中下載,而後拷貝進正確的路徑便可:連接:https://share.weiyun.com/tMPeaqGP 密碼:ye4ezy


3.在編譯到81%左右的時候,可能會報錯Built target opencv_tracking [Makefile:163 : all] 錯誤2(或者其餘相似的錯誤)
這主要是由於下載的包不完整致使的,把缺乏的文件拷貝到:home/pi/Downloads/opencv_contrib-3.4.3/modules/xfeatures2d/src/下便可
缺乏的文件爲:

  • boostdesc_bgm.i
  • boostdesc_bgm_bi.i
  • boostdesc_bgm_hd.i
  • boostdesc_binboost_064.i

  • 缺失文件下載連接:https://share.weiyun.com/6gaKPUXf 密碼:c6myk6

本文最終安裝的OpenCV版本爲OpenCV3.4.3。
如需安裝最新的OpenCV4,可參考博文:https://blog.csdn.net/weixin_43287964/article/details/101696036

本人嘗試在樹莓派上安裝OpenCV3.4.3的過程當中遇到了好多坑,參考網上衆多大佬的筆記後前先後後嘗試了四五天才完成,很是感謝各位大佬的幫助。爲了讓和我同樣剛剛接觸OpenCV的你能順利的安裝opencv,故寫下這篇博客,此篇博客中如有錯誤,歡迎你們指正交流!!!

碼字不易,如需轉載請註明出處,謝謝!!!

相關文章
相關標籤/搜索