目录
(1)在树莓派中安装opencv库
安装依赖
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 2
unzip opencv-master.zip
unzip opencv_contrib-master.zip
安装pip
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
sudo python3 get-pip.py
安装Python虚拟机
sudo pip install virtualenv virtualenvwrapper
sudo rm -rf ~/.cache/pip
配置~/.profile ,添加如下,并使用source ~/.profile生效
export WORKON_HOME=$HOME/.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
使用Python3安装虚拟机
mkvirtualenv cv -p python3
进入虚拟机
source ~/.profile && workon cv
可以看到前面有cv虚拟机的标识
安装numpy
pip install numpy
编译OpenCV
cd ~/opencv-4.1.2/
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=/home/pi/2/opencv_contrib-master/modules
-D BUILD_EXAMPLES=ON
-D WITH_LIBV4L=ON
-D PYTHON3_EXECUTABLE=/usr/bin/python3.7
-D PYTHON_INCLUDE_DIR=/usr/include/python3.7
-D PYTHON_LIBRARY=/usr/lib/arm-linux-gnueabihf/libpython3.7m.so
-D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include
..
调整swap交换文件大小,增大了交换空间CONF_SWAPSIZE=1024
sudo nano /etc/dphys-swapfile #虚拟机中sudo才可以修改
sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start
make -j4
直接炸裂,查询好多博客,都不行,不得不重新烧录,并重新安装依赖。
安装opencv
pip3 install opencv-python
安装成功
(2)使用opencv和python控制树莓派的摄像头
拍照
# import the necessary packages
from picamera.array import PiRGBArray
from picamera import PiCamera
import time
import cv2
# initialize the camera and grab a reference to the raw camera capture
camera = PiCamera()
rawCapture = PiRGBArray(camera)
# allow the camera to warmup
time.sleep(5)
# grab an image from the camera
camera.capture(rawCapture, format="bgr")
image = rawCapture.array
# display the image on screen and wait for a keypress
cv2.imshow("Image", image)
cv2.waitKey(0)
录屏
import cv2
cap = cv2.VideoCapture(0)
while(1):
ret, frame = cap.read()
cv2.imshow("capture", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
(3)利用树莓派的摄像头实现人脸识别
python -m pip install face_recognition_models-0.3.0-py2.py3-none-any.whl
python -m pip install face_recognition-1.3.0-py2.py3-none-any.whl
pip install dlib
pip install face_recognition
安装成功
facerec_on_raspberry_pi.py
facerec_from_webcam_faster.py
(4)结合微服务的进阶任务
安装docker
#脚本安装docker
curl -fsSL https://get.docker.com -o get-docker.sh
#执行安装脚本(使用阿里云镜像)
sh get-docker.sh --mirror Aliyun
#填加用户到docker组
sudo usermod -aG docker $USER
#验证docker版本
docker --version
配置docker的镜像加速
sudo nano /etc/docker/daemon.json
{
"registry-mirrors": ["https://arsotopd.mirror.aliyuncs.com"]
}
编辑完成后,restart一下docker
service docker restart
定制自己的opencv镜像
下载facerec_on_raspberry_pi示例镜像并开启容器
sudo docker run -it
--name face_recognition
--device /dev/vchiq
registry.cn-hangzhou.aliyuncs.com/denverdino/face_recognition
bash
查看facerec_on_raspberry_pi示例代码及结果
python3 tel5.py
facerec_from_webcam_faster.py
权限分配
# 允许所有用户访问显示接口,在树莓派拥有者端操作比较方便
xhost +
创建容器
sudo docker run -it --rm --device=/devideo0 -e DISPLAY=unix$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v /home/pi/Desktop/face-recognition:/face-recognition demosense/raspberrypi3-opencv ash
运行结果
(5)以小组为单位,发表一篇博客,记录遇到的问题和解决方法,提供小组成员名单、分工、各自贡献以及在线协作的图片
问题及解决
opencv安装问题
解决:手动加载一个库文件
sudo nano .bashrc
export LD_ sudo nano .bashrc PRELOAD=/usr/lib/arm-linux-gnueabihf/libatomic.so.1
安装facerec_on_raspberry_pi速度慢
解决:网上直接下载相关模块
make j4翻车
解决:装完依赖直接安装opencv
协作
学号 | 姓名 | 分工 |
---|---|---|
031702234 | 林银河 | 资料查询,现场及在线指导 |
031702241 | 苏杰隆 | 资料查询,实际操作 |
031702236 | 王耀鑫 | 资料查询,博客撰写 |
我们都在同一个城市,所以6月5日下午一起做实验,第二天在线上完成最后的工作。