说明:本文章来源于https://blog.csdn.net/weixin_45880057/article/details/113925609,本人根据实际经验加以改动。
一、安装系统和部署环境
1.检查硬件
笔者使用的是树莓派4B 2G版本,系统是官方32位系统,16G内存卡,树莓派v1.3CSI摄像头,提前测试好摄像头是否能够正常使用:
摄像头使用方法,先在raspi-config里面打开对于摄像头的支持:
sudo raspi-config

选择interface options

选择legacy camera并打开,重启系统。
使用树莓派系统自带的拍照软件进行测试:
raspistill -o imageTest.jpg
拍照得到的照片在命令行的工作目录里面。
2.环境部署
请先更换软件源,否则下载速度会很慢:可以参考中科大镜像源的帮助:https://mirrors.ustc.edu.cn/help/raspbian.html
首先确保树莓派默认的python环境是python3,如何确定,在命令行直接输入
python
观察python命令提示符是否是python3.x.x(新装系统一般都是)如果不是,请参考这位博主的文章:https://blog.csdn.net/weixin_45880057/article/details/113926491
安装所需包体
sudo apt-get install build-essential cmake unzip pkg-config
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
sudo apt-get install libcanberra-gtk*
请每行单独输入。
安装pip:(大多数的系统应该是自带了pip,无需下载)
wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py
下载python包:
sudo pip install virtualenv virtualenvwrapper numpy
sudo rm -rf ~/get-pip.py ~/.cache/pip
编辑profile文件:
sudo nano ~/.profile
在该文件的最后面添加如下内容:
export WORKON_HOME=/home/pi/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
source /usr/local/bin/virtualenvwrapper.sh
export VIRTUALENVWRAPPER_ENV_BIN_DIR=bin
重新编译:
source ~/.profile
3.下载OpenCV
注意:本步骤你的下载速度可能会比较慢(我这里速度还挺快),如果比较慢请考虑使用特殊方法加速下载。
命令行的下载方法:
cd ~
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.3.0.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.3.0.zip
下载的文件保存在/home/pi,解压文件(请先安装unzip)
unzip opencv.zip
mv opencv-4.3.0 opencv
unzip opencv_contrib.zip
二、编译OpenCV和安装
1.编译OpenCV
首先安装编译程序cmake(应当已经预装)
sudo apt-get install cmake
创建编译文件夹:
cd ~/opencv
mkdir build
cd build
进行编译检查:(这一步可能需要耗时5分钟,如果你的网络好的情况下)
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-4.3.0/modules \
-D ENABLE_NEON=ON \
-D ENABLE_VFPV3=ON \
-D BUILD_TESTS=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D BUILD_EXAMPLES=ON ..
注意:在此过程中,cmake需要从网络上下载文件,同理由于国内网络问题下载可能很慢(但是可以耐心等待)因此建议您使用特殊方法进行下载。
准备完成以后,会显示两个done:(直接借用原文章图片)

确认完毕以后,就可以进行编译:
sudo make -j4
根据本人亲身实践,这一步大约耗时1-1.5个小时(树莓派4B 2G内存)在执行编译过程中,建议不要操作树莓派,因为观察系统性能可以发现CPU均处于100%状态,因此多余操作会影响系统性能。编译命令后面加的j4是使用的处理器核心数,当然越多越好,根据你的需求来定(树莓派4B一共有4个核心)。
关于原作者所说的在编译过程中出现的错误,我没有遇到,出现错误的原因可能是上一步准备编译下载文件的时候超时,导致编译的时候没有可用文件报错。如果你的上一步文件下载都是正常的话,应该不会出现问题的。
2.安装OpenCV
sudo make install
这一步的命令执行应当较快。
执行完毕以后,可以打开python,输入import cv2如果没有报错安装就完成了。
三、使用OpenCV
首先测试摄像头:使用luvcview
sudo apt-get install luvcview
luvcview -s 640x480
640x480可以根据自己的摄像头的性能进行更改,我的摄像头是CSI摄像头v1.3不带夜视功能,使用较高分辨率会画面不正常,请根据你自己的摄像头的情况测试。使用Ctrl+C退出。
下载人脸检测程序:
cd
git clone https://gitee.com/jeebus/Facial_Recognition.git
cd Facial_Recognition
运行检测程序:
python3 simpleCamTest.py
会弹出两个摄像头窗口,一个是彩色一个是灰度。先检测摄像头是否颠倒,如果颠倒那么每一次执行下一步操作之前都要修改程序(更改一次保存后面就不用改了)Ctrl+C退出
更改文件
cd FaceDetection
nano faceDetection.py
找到While(true)部分,找到img=cv2.filp(img,-1)将-1改成1,使用Ctrl+O保存,Ctrl+X退出。这样摄像头应当是正向的。
采集人脸信息:
创建文件夹:
cd …/FacialRecognition
mkdir dataset
摄像头倒置先修改代码:
nano 01_face_dataset.py
找到同样的位置进行修改,保存。(这里也可以修改拍照次数,默认是30,可以增加以提高正确率,但是同样也会增加系统负载)
运行采集程序:
python3 01_face_dataset.py
首先要求输入用户ID,这里只能输入数字,然后面对摄像头,会弹出一个摄像窗口并拍照,一直面对摄像头等到窗口消失即可。
训练人脸:
mkdir trainer
python3 02_face_training.py
识别人脸:
摄像头倒置的先修改代码:
nano 03_face_recognition.py
同样位置修改即可。
运行程序:
python3 03_face_recognition.py
即可进行识别及辨别正确度。