步驟1:您需要的東西
1.RASPBERRY PI
2.ARDUINO UNO/NANO
3.16x2 LCD顯示屏
4.RASPI-CAMERA/WEBcam(我更喜歡使用網絡攝像頭以獲得更好的效果)
Step 2:Opencv簡介和安裝
OpenCV(開源計算機視覺庫)是一個非常有用的庫-它提供了許多有用的功能,例如文本識別,面部識別,對象檢測,深度圖的創建和機器學習。
本文將向您展示如何在Raspberry Pi上安裝Opencv和其他庫,這將在進行對象檢測和其他項目時派上用場。從那里,我們將學習如何通過執行對象識別和機器學習項目來執行圖像和視頻操作。具體來說,我們將編寫一個簡單的代碼來檢測圖像中的人臉。
什么是OpenCV?
OpenCV是一種開放源代碼的計算機視覺和機器學習軟件庫。 OpenCV是在BSD許可下發布的,可免費用于學術和商業用途。它具有C ++,Python和Java接口,并支持Windows,Linux,Mac OS,iOS和Android。 OpenCV旨在提高計算效率并著重于實時應用。
如何在Raspberry Pi上安裝OpenCV?
要安裝OpenCV,我們需要安裝Python。由于Raspberry Pis已預裝Python,因此我們可以直接安裝OpenCV。
鍵入以下命令,以確保您的Raspberry Pi是最新的,并將Raspberry Pi上已安裝的軟件包更新為最新版本。
sudo apt-get更新
sudo apt-get升級
在終端中鍵入以下命令以安裝所需的軟件包在樹莓派上使用OpenCV。 》
鍵入以下命令以在Raspberry Pi上安裝適用于Python 3的OpenCV 3,pip3告知我們將為Python 3安裝OpenCV。/p》
sudo pip3安裝opencv-contrib-python libwebp6
現在,OpenCV應該被安裝。
(如果發生任何錯誤:您仍然可以通過以下鏈接進行操作
https://www.instructables.com/id/Raspberry-Pi-Hand 。..)
現在不要著急,我們需要檢查它是否已正確安裝
通過以下方法測試您的opencv:
1.go到終端并鍵入“ python”
2。然后鍵入“ import cv2”。
3。然后鍵入“ cv2 .__ version __”。
然后安裝這些庫
pip3安裝python-numpy
pip3安裝python-matplotlib
測試代碼以檢測圖像中的人臉:
導入cv2
faceCascade = cv2.CascadeClassifier(“ haarcascade_frontalface_default.xml”);
image = cv2.imread(‘您的文件名’) #example-》 cv2.imread(‘home/pi/Desktop/filename.jpg’)
您將獲得像正方形盒子一樣的輸出形成在照片中人的臉上e。
步驟3:在實時視頻中檢測和識別人臉
導入cv2
將numpy導入為np
導入操作系統
導入序列
ser = serial.Serial(‘/dev/ttyACM0’,9600,timeout = 1) #/dev/ttyACM0可能根據您的情況而定,取決于arduino
cascadePath =“ haarcascade_frontalface_default.xml”
faceCascade = cv2.CascadeClassifier(cascadePath)
識別= cv2.face.createLBPHFaceRecognizer()
結果
images = []
labels = []
:
im = cv2.imread(‘數據集/’+文件名,0)
images.append(im)
labels.append(int(filename.split(‘。’)[0] [0]))
#打印文件名
nam es_file =開放( ‘labels.txt’)
名= names_file.read()。分裂( ‘ n’)
recognizer.train(images,np.array(labels))
打印“培訓完成”。 。 。 ‘
font = cv2.FONT _
HERSHEY_SIMPLEXcap = cv2.VideoCapture(1)#您的視頻設備
lastRes =’‘count = 0
while(1):
_,frame = cap.read()
gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
面孔= faceCascade.detectMultiScale(gray,1.3,5)
count + = 1
為(x,y,w, h):
cv2.rectangle(frame,(x,y),(x + w,y + h),(255,0,0),2 )
如果計數》 20:res = names [recognizer.predict(gray [y:y + h,x:x + w])-1]
如果res!= lastRes:
lastRes = res
打印lastRes
ser.write(lastRes)
計數= 0
打破
cv2 .imshow(’frame‘,frame)
k = 0xFF&cv2。 waitKey(10)
如果k == 27:
中斷
的 cap.release()
ser.close()
cv2.destroyAllWindows()
步驟4:運行代碼
1。下載上一步中隨附的文件
2。將灰色照片(6張圖像/樣本。..。.)復制到數據集文件夾
1.Tom Cruise-》 1_1,1_2,1_3,1_4,1_5, 1_6 (用于更多打開的數據集文件夾的數據集圖像編號)
2。布拉德·皮特(Brad Pitt)-》 2_1,2_2,2_3,2_4,2_5,2_6
3。利奧---》 3_1,3_2,3_3,3_4,3_5,3_6
4。鐵人三項 - 》 4_1,4_2,4_3,4_4,4_5,4_6
結果
像上面一樣,您可以為各個人添加標簽,
因此,如果pi檢測到1_1中的人臉, 1_2,1_3,1_4,1_5,1_6,然后它被標記為湯姆·克魯斯(Tom Cruise),所以在上傳照片時請小心。
,然后將您的arduino連接到樹莓派并在main.py代碼中進行更改。ser= serial.Serial(’/dev/ttyACM0‘,9600,timeout = 1)3.put所有下載的文件(main.py,dataset文件夾,haarcascade_frontalface_default.xml在一個文件夾中。)
3。現在打開Raspi終端,通過“ sudo python main.py”運行您的代碼
4.arduino LCD將顯示檢測到的面部名稱
-
人臉識別
+關注
關注
76文章
4011瀏覽量
81860 -
OpenCV
+關注
關注
31文章
634瀏覽量
41338
發布評論請先 登錄
相關推薦
評論