基于树莓派opencv的人脸识别
目录
- 一、 实验目的
- 二、 摄像头配置
- 1. 硬件安装步骤
- 2. 软件安装步骤
- 三、 OpenCV安装
- 1. OpenCV介绍
- 2. Python3上OpenCV安装步骤
- 四、运行人脸识别项目
- 1. 硬件准备
- 2. 环境准备
- 3. 程序代码
- (1)人脸数据收集
- (2)训练识别器
- (3)人脸识别
- 五、总结
一、 实验目的
要实现图像识别,首先就是要获取图像,所以懂得如何安装及使用树莓派CSI摄像头就非常重要。
- 了解摄像头基本工作原理,安装及使用
- 了解opencv,配置人脸识别相关环境
- 收集人脸信息
- 训练收集到的人脸信息
- 将要分析的面部的捕获部分作为参数,并返回其可能的所有者,指示其ID以及识别器对此匹配的信任程度实现人脸的识别。
二、 摄像头配置
图.树莓派CSI摄像头
1. 硬件安装步骤
- 找到 CSI 接口(CSI接口在以太网接口旁边),掀起深色胶带。
- 拉起 CSI 接口挡板。
- 拿起摄像头模块,将贴在镜头上的塑料保护膜撕掉。确保黄色部分的PCB(有字的一面)是安装完美的(可以轻轻按一下黄色的部分来保证安装完美)。
- 将排线插入CSI接口。记住,有蓝色胶带的一面应该面向以太网接口方向。同样,这时也确认一下排线安装好了之后,将挡板拉下。
2. 软件安装步骤
(1) 进入树莓派终端系统,输入以下指令进行下载并安装最新的内核,GPU 固件及应用程序
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>sudo apt-get update
sudo apt-get upgrade
</code></span></span>
(2) 运行以下命令树莓派配置工具来激活摄像头模块
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>sudo raspi-config
</code></span></span>
依次选择Interfacing Options——>Camera——>Enable——>tab——>Finish
(3)重启树莓派
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>sudo reboot
</code></span></span>
(4)测试摄像头
输入命令行,如果得到下面的结果,则证明摄像头连接成功
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>vcgencmd get_camera
</code></span></span>
输入命令,在桌面会显示一张命名为image1.jpg的图片
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>raspistill -o Desktop/image1.jpg
</code></span></span>
(5)至此,树莓派摄像头软硬件配置到此完成
三、 OpenCV安装
1. OpenCV介绍
OpenCV是开源计算机视觉库,拥有强大的内置函数和开源社群。OpenCV配合便携开源廉价的树莓派,可以直接读取来自树莓派摄像头PiCamera的视频,进行人脸识别、边缘检测、语义分割、自动驾驶、图像识别等各种计算机视觉开发。
2. Python3上OpenCV安装步骤
(1)更新树莓派
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>sudo apt-get update
sudo apt-get upgrade
</code></span></span>
(2)安装依赖
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>sudo apt-get install build-essential cmake pkg-config
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev
sudo apt-get install libgtk2.0-dev libgtk-3-dev
sudo apt-get install libatlas-base-dev gfortran
</code></span></span>
(3)安装python3
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>sudo apt-get install python3 python3-setuptools python3-dev
</code></span></span>
(4)设置pip工具
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py
</code></span></span>
(5)增大swap空间
找到CONF_SWAPSIZE这个变量,将100改成1024,表示swap大小从100MB增加到1024MB,可以方便OpenCV使用4核编译ctrl+o保存,ctrl+d退出
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>sudo nano /etc/dphys-swapfile
</code></span></span>
(6)重启swapfile文件
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start
</code></span></span>
(7)下载OpenCV3.4.1和OpenCV-contrib
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.4.1.zip
wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.4.1.zip
</code></span></span>
(8)解压OpenCV安装包
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>unzip opencv.zip
unzip opencv_contrib.zip
</code></span></span>
(9)安装numpy
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>sudo pip3 install numpy
</code></span></span>
(10)设置Cmake编译参数,注意参数名、等号和参数值之间不能有空格,但每行末尾“\”之前有空格,参数值最后是两个英文的点
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>cd /home/pi
cd ~/opencv-3.4.1/
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib-3.4.1/modules \
-D ENABLE_PRECOMPILED_HEADERS=OFF \
-D BUILD_EXAMPLES=ON ..
</code></span></span>
(11)编译并安装OpenCV
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>sudo make install
</code></span></span>
(12)更新动态链接库
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>sudo ldconfig
</code></span></span>
(13)安装完毕,测试OpenCV版本
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>python3
import cv2
cv2.__version__
</code></span></span>
出现opencv版本3.4.1代表安装完毕!
(14)恢复swap空间
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>sudo nano /etc/dphys-swapfile
</code></span></span>
将CONF_SWAPSIZE这个变量由1024改成100
(15)重启swapfile文件
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start
</code></span></span>
四、运行人脸识别项目
介绍如何在树莓派上,使用 OpenCV 和 Python 完成人脸检测项目
1. 硬件准备
- 树莓派4B
- 树莓派piCam
请确保摄像头如上安装步骤进行安装,以免后期摄像头无法运行检测
2. 环境准备
1. OpenCV库准备
2. Python3语言准备
3. 人脸识别代码下载
(1) 进入网址 https://github.com/Mjrovai/OpenCV-Face-Recognition
(2) 下载zip代码压缩包,将文件存放至树莓派/home/pi目录下解压缩
3. 程序代码
OpenCV 具备很强的计算效率,且专门用于实时应用,它非常适合使用摄像头的实时人脸识别,要创建完整的人脸识别项目,我们必须完成3个阶段:
(1)人脸数据收集
人脸识别的最基础任务是人脸检测。你必须首先搜集人脸信息(第 1 阶段)才能在未来与捕捉到的新人脸对比时(第 3 阶段)识别它,具体步骤如下:
a)打开终端,进入目录/home/pi/OpenCV-Face-Recognition-master/FacialRecognition
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>cd /home/pi/OpenCV-Face-Recognition-master/FacialRecognition
</code></span></span>
b)创建dataset文件夹储存人脸样本,和trainer文件夹储存训练数据
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>mkdir dataset
mkdir trainer
</code></span></span>
c)打开01_face_dataset.py
d) 运行代码Run,输入用户ID(可以是1、2、3、4等整数)随后看到弹出image视频框,此时在收集人脸信息,对准人脸耐心等待
e) 打开dataset文件夹,可以看到搜集到的人脸图像,搜集到的图片阅读,人脸检测越准确
Tips:
如果人脸颠倒了,可以加#注释掉如下代码
(2)训练识别器
在第 2 阶段中,我们需要从数据集中抽取所有的用户数据,并训练 OpenCV 识别器,这一过程可由特定的 OpenCV 函数直接完成。这一步将在「trainer/」目录中保存为.yml 文件。
a)确定在 Rpi 中已经安装了 PIL 库,如果没有的话,在终端运行以下命令:
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>pip install pillow
</code></span></span>
b) 打开02_face_training.py ,运行
c) 等待运行完成
(3)人脸识别
b) 打开03_face_recognition.py ,运行,可以看到如下结果,人脸识别成功,其他具体功能自行探索。
五、总结
此次在完成人脸识别项目的过程中,遇到了许多的小困难,具体错误及收获如下:
- 一开始对摄像头进行安装时候,测试摄像头的时候一直弹出timeout的错误信息,后边经过排查确认了是摄像头不稳定造成的,拆下摄像头的排线,重新安装后即可正常工作。
- 安装OpenCV时,编译过程比较久,我安装的时候单编译就花费了四五个小时,后边通过网上查找资料,发现可以四核编译,才扩展了树莓派的swap空间,加快了编译速度,此外编译的过程中也有一些错误:
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>错误信息1:
fatal error: boostdesc_bgm.i: 没有那个文件或目录
#include "boostdesc_bgm.i"
</code></span></span>
解决方法:
树莓派安装opencv时丢失的文件:
链接:百度网盘 请输入提取码
提取码:mbsj
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>将这些文件复制到/home/pi/opencv/opencv_contrib-3.4.1/modules/xfeatures2d/src目录即可继续编译。建议大家直接用xftp的方式将文件复制到该目录下即可。
</code></span></span>
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>错误信息2:
/home/pi/opencv/opencv-3.4.1/modules/stitching/include/opencv2/stitching/detail
/matchers.hpp:52:12: fatal error: opencv2/xfeatures2d/cuda.hpp: 没有那个文件或目录
</code></span></span>
解决方法:文章来源:https://www.toymoban.com/news/detail-769740.html
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>错误的原因是缺少cuda.hpp文件,这些文件在opencv_contrib-3.4.1/modules/xfeatures2d/include/opencv2目录下,所以直接将这个目录下的文件拷贝到opencv-3.4.1/modules/stitching/include/opencv2/即可
</code></span></span>
通过此次的实验学习,初步掌握了识别人脸所需要的具体步骤,还知道了很多拓展知识,运行的代码主要是开源的python代码,python是一门高集成度的语言,我们在学习的时候看不到它的底层,用的时候就是直接调函数即可,这或许是python流行的一大原因。通过此次实验也使我们小组对树莓派有了一定的了解。文章来源地址https://www.toymoban.com/news/detail-769740.html
基于树莓派opencv的人脸识别
目录
- 一、 实验目的
- 二、 摄像头配置
- 1. 硬件安装步骤
- 2. 软件安装步骤
- 三、 OpenCV安装
- 1. OpenCV介绍
- 2. Python3上OpenCV安装步骤
- 四、运行人脸识别项目
- 1. 硬件准备
- 2. 环境准备
- 3. 程序代码
- (1)人脸数据收集
- (2)训练识别器
- (3)人脸识别
- 五、总结
一、 实验目的
要实现图像识别,首先就是要获取图像,所以懂得如何安装及使用树莓派CSI摄像头就非常重要。
- 了解摄像头基本工作原理,安装及使用
- 了解opencv,配置人脸识别相关环境
- 收集人脸信息
- 训练收集到的人脸信息
- 将要分析的面部的捕获部分作为参数,并返回其可能的所有者,指示其ID以及识别器对此匹配的信任程度实现人脸的识别。
二、 摄像头配置
图.树莓派CSI摄像头
1. 硬件安装步骤
- 找到 CSI 接口(CSI接口在以太网接口旁边),掀起深色胶带。
- 拉起 CSI 接口挡板。
- 拿起摄像头模块,将贴在镜头上的塑料保护膜撕掉。确保黄色部分的PCB(有字的一面)是安装完美的(可以轻轻按一下黄色的部分来保证安装完美)。
- 将排线插入CSI接口。记住,有蓝色胶带的一面应该面向以太网接口方向。同样,这时也确认一下排线安装好了之后,将挡板拉下。
2. 软件安装步骤
(1) 进入树莓派终端系统,输入以下指令进行下载并安装最新的内核,GPU 固件及应用程序
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>sudo apt-get update
sudo apt-get upgrade
</code></span></span>
(2) 运行以下命令树莓派配置工具来激活摄像头模块
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>sudo raspi-config
</code></span></span>
依次选择Interfacing Options——>Camera——>Enable——>tab——>Finish
(3)重启树莓派
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>sudo reboot
</code></span></span>
(4)测试摄像头
输入命令行,如果得到下面的结果,则证明摄像头连接成功
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>vcgencmd get_camera
</code></span></span>
输入命令,在桌面会显示一张命名为image1.jpg的图片
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>raspistill -o Desktop/image1.jpg
</code></span></span>
(5)至此,树莓派摄像头软硬件配置到此完成
三、 OpenCV安装
1. OpenCV介绍
OpenCV是开源计算机视觉库,拥有强大的内置函数和开源社群。OpenCV配合便携开源廉价的树莓派,可以直接读取来自树莓派摄像头PiCamera的视频,进行人脸识别、边缘检测、语义分割、自动驾驶、图像识别等各种计算机视觉开发。
2. Python3上OpenCV安装步骤
(1)更新树莓派
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>sudo apt-get update
sudo apt-get upgrade
</code></span></span>
(2)安装依赖
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>sudo apt-get install build-essential cmake pkg-config
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev
sudo apt-get install libgtk2.0-dev libgtk-3-dev
sudo apt-get install libatlas-base-dev gfortran
</code></span></span>
(3)安装python3
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>sudo apt-get install python3 python3-setuptools python3-dev
</code></span></span>
(4)设置pip工具
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py
</code></span></span>
(5)增大swap空间
找到CONF_SWAPSIZE这个变量,将100改成1024,表示swap大小从100MB增加到1024MB,可以方便OpenCV使用4核编译ctrl+o保存,ctrl+d退出
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>sudo nano /etc/dphys-swapfile
</code></span></span>
(6)重启swapfile文件
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start
</code></span></span>
(7)下载OpenCV3.4.1和OpenCV-contrib
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.4.1.zip
wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.4.1.zip
</code></span></span>
(8)解压OpenCV安装包
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>unzip opencv.zip
unzip opencv_contrib.zip
</code></span></span>
(9)安装numpy
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>sudo pip3 install numpy
</code></span></span>
(10)设置Cmake编译参数,注意参数名、等号和参数值之间不能有空格,但每行末尾“\”之前有空格,参数值最后是两个英文的点
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>cd /home/pi
cd ~/opencv-3.4.1/
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib-3.4.1/modules \
-D ENABLE_PRECOMPILED_HEADERS=OFF \
-D BUILD_EXAMPLES=ON ..
</code></span></span>
(11)编译并安装OpenCV
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>sudo make install
</code></span></span>
(12)更新动态链接库
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>sudo ldconfig
</code></span></span>
(13)安装完毕,测试OpenCV版本
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>python3
import cv2
cv2.__version__
</code></span></span>
出现opencv版本3.4.1代表安装完毕!
(14)恢复swap空间
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>sudo nano /etc/dphys-swapfile
</code></span></span>
将CONF_SWAPSIZE这个变量由1024改成100
(15)重启swapfile文件
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start
</code></span></span>
四、运行人脸识别项目
介绍如何在树莓派上,使用 OpenCV 和 Python 完成人脸检测项目
1. 硬件准备
- 树莓派4B
- 树莓派piCam
请确保摄像头如上安装步骤进行安装,以免后期摄像头无法运行检测
2. 环境准备
1. OpenCV库准备
2. Python3语言准备
3. 人脸识别代码下载
(1) 进入网址 https://github.com/Mjrovai/OpenCV-Face-Recognition
(2) 下载zip代码压缩包,将文件存放至树莓派/home/pi目录下解压缩
3. 程序代码
OpenCV 具备很强的计算效率,且专门用于实时应用,它非常适合使用摄像头的实时人脸识别,要创建完整的人脸识别项目,我们必须完成3个阶段:
(1)人脸数据收集
人脸识别的最基础任务是人脸检测。你必须首先搜集人脸信息(第 1 阶段)才能在未来与捕捉到的新人脸对比时(第 3 阶段)识别它,具体步骤如下:
a)打开终端,进入目录/home/pi/OpenCV-Face-Recognition-master/FacialRecognition
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>cd /home/pi/OpenCV-Face-Recognition-master/FacialRecognition
</code></span></span>
b)创建dataset文件夹储存人脸样本,和trainer文件夹储存训练数据
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>mkdir dataset
mkdir trainer
</code></span></span>
c)打开01_face_dataset.py
d) 运行代码Run,输入用户ID(可以是1、2、3、4等整数)随后看到弹出image视频框,此时在收集人脸信息,对准人脸耐心等待
e) 打开dataset文件夹,可以看到搜集到的人脸图像,搜集到的图片阅读,人脸检测越准确
Tips:
如果人脸颠倒了,可以加#注释掉如下代码
(2)训练识别器
在第 2 阶段中,我们需要从数据集中抽取所有的用户数据,并训练 OpenCV 识别器,这一过程可由特定的 OpenCV 函数直接完成。这一步将在「trainer/」目录中保存为.yml 文件。
a)确定在 Rpi 中已经安装了 PIL 库,如果没有的话,在终端运行以下命令:
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>pip install pillow
</code></span></span>
b) 打开02_face_training.py ,运行
c) 等待运行完成
(3)人脸识别
b) 打开03_face_recognition.py ,运行,可以看到如下结果,人脸识别成功,其他具体功能自行探索。
五、总结
此次在完成人脸识别项目的过程中,遇到了许多的小困难,具体错误及收获如下:
- 一开始对摄像头进行安装时候,测试摄像头的时候一直弹出timeout的错误信息,后边经过排查确认了是摄像头不稳定造成的,拆下摄像头的排线,重新安装后即可正常工作。
- 安装OpenCV时,编译过程比较久,我安装的时候单编译就花费了四五个小时,后边通过网上查找资料,发现可以四核编译,才扩展了树莓派的swap空间,加快了编译速度,此外编译的过程中也有一些错误:
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>错误信息1:
fatal error: boostdesc_bgm.i: 没有那个文件或目录
#include "boostdesc_bgm.i"
</code></span></span>
解决方法:
树莓派安装opencv时丢失的文件:
链接:百度网盘 请输入提取码
提取码:mbsj
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>将这些文件复制到/home/pi/opencv/opencv_contrib-3.4.1/modules/xfeatures2d/src目录即可继续编译。建议大家直接用xftp的方式将文件复制到该目录下即可。
</code></span></span>
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>错误信息2:
/home/pi/opencv/opencv-3.4.1/modules/stitching/include/opencv2/stitching/detail
/matchers.hpp:52:12: fatal error: opencv2/xfeatures2d/cuda.hpp: 没有那个文件或目录
</code></span></span>
解决方法:
<span style="background-color:#f5f5f5"><span style="color:#333333"><code>错误的原因是缺少cuda.hpp文件,这些文件在opencv_contrib-3.4.1/modules/xfeatures2d/include/opencv2目录下,所以直接将这个目录下的文件拷贝到opencv-3.4.1/modules/stitching/include/opencv2/即可
</code></span></span>
通过此次的实验学习,初步掌握了识别人脸所需要的具体步骤,还知道了很多拓展知识,运行的代码主要是开源的python代码,python是一门高集成度的语言,我们在学习的时候看不到它的底层,用的时候就是直接调函数即可,这或许是python流行的一大原因。通过此次实验也使我们小组对树莓派有了一定的了解。
到了这里,关于基于树莓派opencv的人脸识别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!