.
.
树莓3、usb摄像头.
Opencv、python3.
分别按顺序输入以下的命令,等待安装完成:
展开文件系统:
$ sudo raspi-config
$ sudo reboot
$ sudo apt-get purge wolfram-engine
$ sudo apt-get purge libreoffice*
$ sudo apt-get clean
$ sudo apt-get autoremove
安装依赖关系:
$ sudo apt-get update && sudo apt-get upgrade
$ 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
$ sudo apt-get install python2.7-dev python3-dev
下载opencv源代码:
$ cd ~
$ wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.3.0.zip
$ unzip opencv.zip
$ wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.3.0.zip
$ unzip opencv_contrib.zip
$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python get-pip.py
$ sudo python3 get-pip.py
$ sudo pip install virtualenv virtualenvwrapper
$ sudo rm -rf ~/.cache/pip
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
$ echo -e "\n# virtualenv and virtualenvwrapper" >> ~/.profile
$ echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.profile
$ echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.profile
$ source ~/.profile
创建python虚拟环境:
$ mkvirtualenv cv -p python3
$ source ~/.profile
$ workon cv
在树莓派上安装numpy:
$ pip install numpy
编译并安装opencv:
$ workon cv
$ cd ~/opencv-3.3.0/
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.3.0/modules \
-D BUILD_EXAMPLES=ON ..
$ sudo nano /etc/dphys-swapfile
编辑变量:
#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=100 CONF_SWAPSIZE=1024
$ sudo /etc/init.d/dphys-swapfile stop
$ sudo /etc/init.d/dphys-swapfile start
编译opencv(此过程大约需要一到两小时)
$ make -j4
安装opencv3:
$ sudo make install
$ sudo ldconfig
收尾工作:
$ ls -l /usr/local/lib/python3.5/site-packages/
total 1852
-rw-r--r-- 1 root staff 1895932 Mar 20 21:51 cv2.cpython-34m.so
发现文件名为cv2.cpython-35m-arm-linux-gnueabihf.so cv2.so,需将其修改成cv2.so
$ cd /usr/local/lib/python3.5/site-packages/
$ sudo mv cv2.cpython-35m-arm-linux-gnueabihf.so cv2.so
将我们的OpenCV绑定对应到Python 3.5 的 cv虚拟环境中
$ cd ~/.virtualenvs/cv/lib/python3.5/site-packages/
$ ln -s /usr/local/lib/python3.5/site-packages/cv2.so cv2.so
测试opencv3安装是否成功:
$ source ~/.profile
$ workon cv
$ python
>>> import cv2
>>> cv2.__version__
证明opencv安装成功!
编辑变量:
$ sudo nano /etc/dphys-swapfile
#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=100
#CONF_SWAPSIZE=1024
$ sudo /etc/init.d/dphys-swapfile stop
$ sudo /etc/init.d/dphys-swapfile start
此时,python3和opencv环境已安装完成。
在笔记本电脑上远程连接树莓派3,登录我的树莓派,在远端进行linux命令的操作。
每次都要运行source ~/.profile命令,否则无法进入opencv虚拟环境
接下来输入 workon cv,出现
(cv) pi@raspberry:~$
证明已经进入cv虚拟环境。
运行python simpleCamTest.py 命令,可看到一个正常和一个灰色共两个摄像窗口。说明可以正常通过python和cv调用摄像头。
新建一个存放本次实验的代码目录,并在此目录下新建一个名为Cascades的子目录,用来存放对象分类器,本实验主要是用来存放有关人脸的训练分类器。将haarcascade_frontalface_default.xml文件放于Cascades目录下。
运行 faceDetection.py,出现如下图的蓝色检测到人脸的方框。
如果需要实现不仅检测脸部,还要检测眼睛、嘴巴等功能,可以分别在指定目录下放置不同的py件和xml文件。
如下图,是同时检测出脸部、眼部和嘴部的效果图:
这一步的主要目的是创建一个简单的数据集,该数据集将储存每张人脸的 ID 和一组用于人脸检测的灰度图,当摄像头检测出人脸时能够显示本人的id。
新建一个名为FacialRecognitionProject的文件,用来储存python代码和人脸分类器。再新建一个名为dataset的子目录,用来存储人脸数据。
运行 01_face_dataset.py 代码,输入我的id为1,摄像头会自动为我拍摄30张照片作为训练样本。
这一步我们需要从数据集中抽取所有的用户数据,并训练 OpenCV 识别器,这一过程可由特定的 OpenCV 函数直接完成。
在FacialRecognitionProject目录下新建名为trainer的子目录,保存yml文件。用时,也要将haarcascade_frontalface_default.xml放在FacialRecognitionProject目录下。
运行代码 02_face_training.py,接下来一个名为trainer.yml的文件会保存在trainer目录下。
运行 03_face_recognition.py 代码。在运行代码之前,需要修改数组中的字符串,names = [‘None’, ‘Marcelo’, ‘Paula’, ‘Ilza’, ‘Z’, ‘W’],分别对应id为0,1,2,3,4,5的名字。我在此将Marcelo修改成我的英文名See。最后,运行代码效果如下:
来自树莓派实验室,http://shumeipai.nxez.com/2018/03/09/real-time-face-recognition-an-end-to-end-project-with-raspberry-pi.html.