树莓派实时人脸识别

树莓派实时人脸识别

最近在研究 face_recognition,这个一个人脸识别的库,可以通过python调用。作者在电脑上用摄像头实现了一个实时人脸识别的效果,如下图所示。
实时人脸识别效果
我想在树莓派上实现这个效果。如果嵌入式设备也能做的这样,那就太好玩了。就像电影里的那种效果。(找不到好图,网上只找到这张)
电影效果

安装过程

我们可以直接参考项目页面上的安装指引 Raspberry Pi 2+ installation instructions。我使用的是树莓派2B,CPU是4核900MHz,内存1GB(不过face_recognition只会用到单核),并且我将CPU超频到1050MHz。(关于树莓派超频,可以看我另一篇博客树莓派超频后性能与功耗的研究
下面我说一下我的安装步骤。(怎么装系统就不说了,网上大把。装完记得修改源,我在学校,用中科大的源。)
先安装一大堆需要的库:

sudo apt-get update
sudo apt-get install build-essential \
    cmake \
    gfortran \
    git \
    wget \
    curl \
    graphicsmagick \
    libgraphicsmagick1-dev \
    libatlas-dev \
    libavcodec-dev \
    libavformat-dev \
    libboost-all-dev \
    libgtk2.0-dev \
    libjpeg-dev \
    liblapack-dev \
    libswscale-dev \
    pkg-config \
    python3-dev \
    python3-numpy \
    python3-pip \
    zip

如果使用树莓派的摄像头(CSI接口的那个),执行下面的命令:

sudo apt-get install python3-picamera
sudo pip3 install --upgrade picamera[array]

下载安装dlib:

mkdir -p dlib
git clone -b 'v19.6' --single-branch https://github.com/davisking/dlib.git dlib/
cd ./dlib
sudo python3 setup.py install --compiler-flags "-mfpu=neon"

安装face_recognition

sudo pip3 install face_recognition

下载示例代码并尝试运行:

git clone --single-branch https://github.com/ageitgey/face_recognition.git
cd ./face_recognition/examples
python3 facerec_on_raspberry_pi.py

到这里我出现了报错,说缺少了一个库。一般缺少库的话,我们会先用apt-cache search 库名来搜索到那个库的安装包,然后用sudo apt-get install 包名来安装。
这里报错说缺少了libatlas.so.3,那我们就用apt-cache search libatlas来搜索,发现它的包名叫libatlas3-base,所以我们用sudo apt-get install libatlas3-base来安装。后面测试摄像头的时候也会遇到这样的问题,解决办法是一样的。
安装完之后,代码正常运行。
我们的目标是树莓派实时人脸识别,所以我们把树莓派的摄像头(CSI接口的那个)装上,并且在raspi-config中启用摄像头,然后重启。(如果不懂的话请搜索一下“树莓派摄像头使用”)
然后我们运行一下实时人脸识别的代码:

python3 facerec_from_webcam_faster.py

会报错,在import cv2的时候缺少什么库,然后根据提示用之前安装方法安装就好了。装完一个库再运行的时候,发现又提示缺少别的库,然后再安装缺少的库,这样反复个三四次,就把缺少的库都装好了,然后就不再报缺少库的错误了。(库名我都忘了,反正很快就弄好的了)
不过再次运行的时候,会报别的错误,出错的代码是small_frame = cv2.resize(frame, (0, 0), fx=0.25, fy=0.25),这是因为video_capture.read()没有读到图片。摄像头都装了,为什么会读不出图片呢?难道摄像头坏了?不是。

这是因为树莓派中的camera module是放在/boot/目录中以固件形式加载的,不是一个标准的V4L2的摄像头驱动,所以加载起来之后会找不到/dev/video0的设备节点。来源:【树莓派】在OpenCV中调用CSI摄像头

所以我们可以使用下面的命令来加载驱动模块,就没问题了:

sudo modprobe bcm2835-v4l2

如果想开机自动加载,我们可以修改/etc/modules文件,添加一行:

bcm2835-v4l2

如下图所示:
开机自动加载模块示意图
然后,我们再运行代码进行测试:

python3 facerec_from_webcam_faster.py

现在代码能正常运行了。会弹出一个图像框,里面显示出摄像头的拍摄内容。下面是我的测试图片:
奥巴马测试
普京测试

树莓派是一款小型而强大的单板计算机,可以被用于多种应用,包括人脸识别。而OpenCV(Open Source Computer Vision Library,开源计算机视觉库)是一个在计算机视觉领域广泛使用的开源库。通过在树莓派上使用OpenCV,我们可以进行人脸识别的开发。 首先,我们需要确保树莓派上安装了OpenCV。可以通过在终端中运行相应的安装命令来完成安装。安装完成后,我们可以使用OpenCV提供的功能进行人脸识别的开发。 在树莓派上使用OpenCV进行人脸识别的一般步骤如下: 1. 导入OpenCV库并加载人脸识别模型:在代码中导入OpenCV库,并加载已训练好的人脸识别模型,如Haar特征分类器模型。 2. 打开摄像头或加载图像:通过OpenCV的摄像头模块打开树莓派摄像头进行实时人脸识别,或加载一张图像进行静态人脸识别。 3. 对图像进行灰度化处理:将彩色图像转换为灰度图像,以便于后续的人脸检测和识别。 4. 使用人脸检测器检测人脸:利用OpenCV提供的人脸检测器对灰度图像进行人脸检测,获取人脸的位置信息。 5. 对检测到的人脸进行人脸识别:基于已训练好的人脸识别模型,对检测到的人脸图像进行特征提取和匹配,以识别人脸。 6. 标记和显示识别结果:在图像上标记出检测到的人脸区域,并显示出识别的结果。 通过上述步骤,我们可以在树莓派上实现基于OpenCV的人脸识别树莓派的低功耗和便携性,以及OpenCV的强大功能,使得它们成为一个理想的组合,可用于各种需要人脸识别的应用,如安全系统、门禁系统等等。
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值