树莓派人脸识别_人脸识别 | 在树莓派上进行人脸识别

配件准备:

  • 树莓派

  • 摄像头(USB或CSI)

step1:在终端上运行如下代码,出现下面的界面

sudo raspi-config

然后按步骤选择Advanced Options:

a09c86b137542585b1ef85978bd1e8a7.png

再选择Expand Filesystem :Raspberry PI “Expand Filesystem”菜单允许我们利用整个闪存卡。这将给我们必要的空间来安装OpenCV 4和其他软件包。(通过键盘上下左右键来选择)

然后点击finish,最后用如下代码重启一下树莓派。

sudo reboot

在重新启动之后,文件系统已经扩展到SD卡上的所有可用空间。您可以通过执行df-h并检查输出来验证磁盘是否已展开

step2:在Raspberry PI上安装OpenCV 4依赖项

1、更新系统

sudo apt-get update && sudo apt-get upgrade

2、然后,安装开发工具,包括CMake

sudo apt-get install build-essential cmake unzip pkg-config

3、安装图像和视频库

$ sudo apt-get install libjpeg-dev libpng-dev libtiff-dev$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev$ sudo apt-get install libxvidcore-dev libx264-dev

4、安装GTK,GUI后端:

$ sudo apt-get install libgtk-3-dev

5、安装一个可以减少烦人的gtk警告的包

$ sudo apt-get install libcanberra-gtk*

6、然后安装两个包,其中包含OpenCV的数值优化

$ sudo apt-get install libatlas-base-dev gfortra

7、安装Python 3

$ sudo apt-get install python3-dev

step3:下载OpenCV 4

  1. 下载opencv 和opencv_contrib

$ cd ~$ wget -O opencv.zip https://github.com/opencv/opencv/archive/4.0.0.zip$ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.0.0.zip
  1. 解压

$ unzip opencv.zip$ unzip opencv_contrib.zip
  1. 原文在这个改变了文件的名字,如果你需要修改的话就按照如下代码。如果您跳过重命名目录,请不要忘记更新CMake路径
$ mv opencv-4.0.0 opencv$ mv opencv_contrib-4.0.0 opencv_contrib

step4:为OpenCV 4配置Python 3虚拟环境

1、安装pip

$ wget https://bootstrap.pypa.io/get-pip.py$ sudo python3 get-pip.py

2、安装虚拟环境

$ sudo pip install virtualenv virtualenvwrapper$ sudo rm -rf ~/get-pip.py ~/.cache/pip

要完成这些工具的安装,我们需要更新我们的~/.profile文件(类似于.bashrc或.bash_profile)

3、使用终端文本编辑器(如vi/vim或Nano),将以下行添加到您的~/.profile中:

# virtualenv and virtualenvwrapperexport WORKON_HOME=$HOME/.virtualenvsexport VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3source /usr/local/bin/virtualenvwrapper.sh

或者使用bash命令直接加:

$ echo -e "\n# virtualenv and virtualenvwrapper" >> ~/.profile$ echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.profile$ echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.profile$ echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.profile

加完之后,你可以先打开~/.profile看看,是否加上了上面的代码,确定加上了之后运行如下代码:

$ source ~/.profile

4、创建一个虚拟环境来保存OpenCV 4和其他软件包,

$ mkvirtualenv cv -p python3

这一行是创建一个名为cv的Python3虚拟环境。cv只是个名字可以更改。运行完这一行后可以验证一下这个环境;使用如下命令

$ workon cv

现象为:出现cv打头,就说明我们上面步骤成功了。

5、安装numpy

$ pip install numpy

step5:CMake和编译opencv

这一步很耗时,注意等待。

1、

$ cd ~/opencv$ mkdir build$ cd build

2、运行CMake来配置OpenCV 4

$ cmake -D CMAKE_BUILD_TYPE=RELEASE \    -D CMAKE_INSTALL_PREFIX=/usr/local \    -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \    -D ENABLE_NEON=ON \    -D ENABLE_VFPV3=ON \    -D BUILD_TESTS=OFF \    -D OPENCV_ENABLE_NONFREE=ON \    -D INSTALL_PYTHON_EXAMPLES=OFF \    -D BUILD_EXAMPLES=OFF ..

请确保更新上述命令以使用正确的OpenCV_EXTER_MODES_PATH路径。一旦Cmake完成,检查输出是非常重要的。您的输出应该与下面的输出类似

3、增加SWAP空间

打开/etc/dphys-swapfile文件:

$ sudo nano /etc/dphys-swapfile

然后编辑CONF_SWAPSIZE的值;将其改成2048;这个值最后还需要改回100。这个是从100MB大小增加到2048MB

# 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=100CONF_SWAPSIZE=2048

如果您不执行此步骤,很可能你的PI将挂起。

4、重新启动交换服务:

$ sudo /etc/init.d/dphys-swapfile stop$ sudo /etc/init.d/dphys-swapfile start

5、编译opencv4

$ make -j4

-j4参数指定我有4个核心来编译。如果有编译错误或Raspberry PI挂/冻结,可以尝试不使用-J4开关。

编译过程大概是这样在这里,您可以看到OpenCV 4编译后没有任何错误

6、使用两个附加命令安装OpenCV 4

$ sudo make install$ sudo ldconfig

这一步结束后 ,重复刚才修改SWAP值得步骤,将CONF_SWAPSIZE得值从2048改回到100

step6:将OpenCV 4链接到Python 3虚拟环境中

从SystemSite-Packages目录中的OpenCV安装创建一个符号链接到我们的虚拟环境:(我安装得是python3.7,所以下面命令里面我用得python3.7)

$ cd ~/.virtualenvs/cv/lib/python3.5/site-packages/$ ln -s /usr/local/python/cv2/python-3.5/cv2.cpython-35m-arm-linux-gnueabihf.so cv2.so$ cd ~

这一步至关重要。如果不创建符号链接,就无法在脚本中导入OpenCV。另外,确保上述命令中的路径和文件名对于Raspberry PI是正确的。

step7:在Raspberry PI上测试安装的OpenCV 4;打开终端输入下面命令,出现如下画面就表示你已经安装好了opencv4.0.0

$ workon cv$ python>>> import cv2>>> cv2.__version__'4.0.0'>>> exit()

安装好后可以测试一下,树莓派4B+opencv4+python 打开摄像头

"""人脸识别FaceDetection通过HaarCascade模型,进行人脸识别与眼睛识别,在视频流中绘制矩形,标识人脸"""import cv2import timeimport busioimport boardfrom PIL import Image, ImageDraw, ImageFontbuffer = Image.new(device.mode, device.size)draw = ImageDraw.Draw(buffer)cap = cv2.VideoCapture(0)print("摄像头是否已经打开 ?{}".format(cap.isOpened()))# 设置画面的尺寸# 画面宽度设定为 1920cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)# 画面高度度设定为 1080cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080# 加载人脸特征库face_cascade = cv2.CascadeClassifier(r'./data/haarcascades/haarcascade_frontalface_default.xml')while(True):    # 读取一帧的图像    ret, frame = cap.read()    # 转灰    gray = cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY)    # 检测人脸    faces = face_cascade.detectMultiScale(gray, scaleFactor = 1.15, minNeighbors = 5, minSize = (5, 5))    # 遍历返回的face数组    for face in faces:        # 解析tuple类型的face位置数据        # (x, y): 左上角坐标值        # w: 人脸矩形区域的宽度        # h: 人脸矩形区域的高度        (x, y, w, h) = face        # 用矩形圈出人脸        cv2.rectangle(gray, (x, y), (x + w, y + h), (0, 255, 0), 4)     cv2.imshow('Face Recognition', gray)    if cv2.waitKey(1) & 0xFF == ord('q'):        break cap.release() # 释放摄像头cv2.destroyAllWindows()
谷歌翻译: 如果相机拍照而没有人注意到,它真的发生了吗?在本书中,我们将向您展示如何制作基于Raspberry Pi的相机系统,以便您可以捕获延时图像并通过WiFi查看,如果检测到运动则触发相机,甚至可以执行基本面部认可作为机器学习方法的介绍。 拿一个Raspberry Pi并添加一个相机模块,你就有了一个可编程相机。添加一些软件,您就可以开始进行有趣的监视和自动对象识别工作。将Pi激活为WiFi节点,您可以远距离完成所有这些美妙的事物。 一个好的监控系统不仅仅是拍照。它还应该将这些图片转化为可操作的信息,从而增加您的知识。现在可以在软件中轻松完成,我们将向您展示如何操作。 本书汇集了一系列小技巧 - 设置Pi相机,将Pi广播作为WiFi设备,增加时间流逝和运动检测和人脸识别,并在其上粘贴电池组,以便它可以在任何地方运行 - 创建便携式间谍相机。我们在“Find the Pi”派对比赛,在我们的实验室中实施隐私尊重的安全性,以及炫耀面部识别等现代技术的过程中使用了这些装备。其他用途可能包括监控鹿和野生动物,检查您的邮箱到达邮件,以及捕获自然事件或交通模式的延时序列。 我们的第一个项目是创建一个便携式“SpyPi”摄像机设备,通过WiFi广播图像而无需网络 - 您只需登录它即可查看摄像机看到的内容。它非常适合“寻找相机”狩猎挑战或独立安全。 第二个项目将涉及设置一个延时摄像头,可以进行简单的运动检测 - 非常适合监控位置。该系统将包括一周后自动删除旧图像。 第三个项目是为您的SpyPi添加面部检测和面部识别功能。在此过程中,您将了解这些项目结束时安装的工具和软件,以便您可以超越本书并探索其他机器学习方法。 所以抓住一个Pi,一个SD卡,一个USB摄像头和一个USB电池组,让我们走吧!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值