步骤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浏览量
81844 -
OpenCV
+关注
关注
31文章
634浏览量
41331
发布评论请先 登录
相关推荐
评论