2020系统综合实践 第7次实践作业 04组
目录
(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交换文件大小
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)
录屏
(3)利用树莓派的摄像头实现人脸识别
先到链接中下载相关模块(感谢18组的分享)
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镜像
首先拉取镜像
sudo docker pull sixsq/opencv-python
运行镜像
sudo docker run -it sixsq/opencv-python /bin/bash
下载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
权限分配
# 允许所有用户访问显示接口,在树莓派拥有者端操作比较方便
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 \bash
运行结果
(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日下午一起做实验,第二天在线上完成最后的工作。 | ||
![]() |
||
![]() |
||
![]() |