參考資料:python
【爲樹莓派更換國內鏡像源】https://blog.csdn.net/la9998372/article/details/77886806/git
【子豪兄教你在樹莓派上安裝OpenCV】https://zhuanlan.zhihu.com/p/46032511github
【樹莓派安裝OpenCV3完整過程】https://blog.csdn.net/kyokozan/article/details/79192646網絡
關鍵詞:編輯器
樹莓派 更新源 Python版本切換 OpenCV實時人臉識別 ide
1、準備工做工具
一、軟件ui
1.鏡像工具:win32diskimager-1.0.0google
2.SD卡格式化工具:SDCardFormatterv5_WinENurl
【連接:https://pan.baidu.com/s/1CLL-FWZz2UMQdkUjzUyEWg 提取碼:lde6 】
3.樹莓派官方系統:2018-11-13-raspbian-stretch-full.img
【下載地址https://www.raspberrypi.org/downloads/raspbian/ 下載Raspbian Stretch with desktop and recommended software】
二、硬件
樹莓派3B+、32G TF卡(16G及以上)、攝像頭、鍵盤鼠標顯示器……
三、系統燒寫
1.SD格式化:Format便可
2.系統燒寫,選擇鏡像文件,確認燒錄設備後,點擊寫入,大概5分鐘後,提示寫入成功,點擊退出,彈出SD卡,插樹莓派上
2、系統安裝及配置
一、開始
SD卡插好後,接上電源(勿用電腦USB,建議直接使用手機充電頭,不然開機屏幕右上角顯示一個⚡符號,表示電力不足),接上顯示器鍵盤鼠標……
系統自動安裝,進入桌面後,有一個嚮導程序,能夠先選擇地區,設置密碼,選擇WIFI網絡。注意,後面一步提示更新軟件,請直接點Skip跳過去,以後一概Skip,而後會自動重啓。(等下一步更新源以後再去更新)
二、更新源
編輯/etc/apt/sources.list文件:
sudo nano /etc/apt/sources.list
用#註釋原內容,用如下內容替換:
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
編輯/etc/apt/sources.list.d/raspi.list文件:
sudo nano /etc/apt/sources.list.d/raspi.list
用#註釋原內容,用如下內容替換:
deb http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui
deb-src http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui
最後更新:
sudo apt-get update
sudo apt-get upgrade
三、下載輸入法
sudo apt-get install fcitx fcitx-googlepinyin fcitx-module-cloudpinyin fcitx-sunpinyin
四、Python版本切換
輸入python -V查看版本
sudo rm usr/bin/python
sudo ln -s usr/bin/python3.5 usr/bin/python
再輸入python -V查看版本
五、打開攝像頭等功能
1.使能攝像頭
sudo raspi-config
選擇第5項【Interfacing Options】,選擇【P1 Camera】,一直選【是】
除此外,也能夠點任務欄的樹莓派Logo,首選項->Raspberry Pi Configuration,在Interfaces中,Camera選項,點Enable
2.相關設置
輸入:sudo nano /etc/modules
// 進入編輯界面後,在末尾添加輸入
snd-bcm2835
bcm2835-v4l2
【先按鍵盤上的ctrl+o,再按回車保存,再按ctrl+x退出nano編輯器回到命令行界面。】
3.驗證
輸入:vcgencmd get_camera
出現下面的狀況,證實設置成功
4、OpenCV
一、安裝numpy
sudo pip3 install numpy
二、擴大目錄
sudo raspi-config
選擇Advanced Options
選擇Expand Filesystem,將根目錄擴展到這個SD卡,充分利用SD卡的存儲空間。若是不進行這一步,後續命令會出現卡死。
退出設置界面,重啓樹莓派。
sudo reboot
三、安裝
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
sudo apt-get install libgtk2.0-dev -y
sudo apt-get install libatlas-base-dev gfortran -y
git clone https://github.com/opencv/opencv.git
//下載的文件可能須要解壓
//打開下載的文件
cd opencv-3.4.3
mkdir release
cd release
//直接複製下面兩行
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local ..
//編譯(這步耗時較長,2小時左右)
sudo make
//安裝
sudo make install
//更新動態連接庫
sudo ldconfig
驗證安裝OpenCV是否成功,成功後,會顯示灰度圖,中心有圓圈
1 # -*- coding: utf-8 -*- 2 __author__ = "kyoRan" 3 4 import cv2 5 6 cap = cv2.VideoCapture(0) # 打開攝像頭 7 print("VideoCapture is opened?", cap.isOpened()) 8 9 while(True): 10 11 ret, frame = cap.read() # 讀取攝像頭圖像 12 center = (frame.shape[1]//2, frame.shape[0]//2) # 圖像中心點位置 13 14 gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 轉灰度 15 cv2.circle(gray, center=center, radius=100, color=(0,0,255)) # 畫圓 16 cv2.imshow("frame", gray) # 顯示圖片 17 18 if cv2.waitKey(1) & 0xFF == ord('q'): 19 break 20 21 cap.release() # 釋放攝像頭 22 cv2.destroyAllWindows() # 關閉全部窗口
5、實時人臉識別設置
代碼以下,其中,haarcascade_frontalface_default.xml文件在, opencv-3.4.3/data/haarcascades中
1 import numpy as np 2 import cv2 3 4 faceCascade = cv2.CascadeClassifier('haarcascades/haarcascade_frontalface_default.xml') 5 6 cap = cv2.VideoCapture(0) 7 cap.set(3,640) # set Width 8 cap.set(4,480) # set Height 9 10 while True: 11 ret, img = cap.read() 12 img = cv2.flip(img, -1) 13 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 14 faces = faceCascade.detectMultiScale( 15 gray, 16 scaleFactor=1.2, 17 minNeighbors=5, 18 minSize=(20, 20) 19 ) 20 21 for (x,y,w,h) in faces: 22 cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2) 23 roi_gray = gray[y:y+h, x:x+w] 24 roi_color = img[y:y+h, x:x+w] 25 26 cv2.imshow('video',img) 27 28 k = cv2.waitKey(30) & 0xff 29 if k == 27: # press 'ESC' to quit 30 break 31 32 cap.release() 33 cv2.destroyAllWindows()