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 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日下午一起做实验,第二天在线上完成最后的工作。


原文地址:https://www.cnblogs.com/wangerfu/p/13056472.html