2020系统综合实践 第7次实践作业

拓展文件系统

  • 在树莓派终端(或者SSH)上输入
    sudo raspi-config
    
  • 选择“高级选项”菜单项
  • 选择“扩展文件系统”
  • 选择第一个选项“A1.Expand Filesystem”,按键盘上的Enter键,完成后点击“Finish”按钮,重新启动树莓派。重新启动后,文件系统已经扩展为包括micro-SD卡上的所有空间。可以通过执行 df -h 检查输出来验证磁盘是否已扩展。
  • 可以删除LibreOffice和Wolfram引擎以释放Pi上的一些空间
  sudo apt-get purge wolfram-engine
  sudo apt-get purge libreoffice*
  sudo apt-get clean
  sudo apt-get autoremove

1. 在树莓派中安装opencv库

  • 安装依赖
# 更新和升级任何现有的软件包
sudo apt-get update && sudo apt-get upgrade 
# 安装开发工具CMake,帮助我们配置OpenCV构建过程
sudo apt-get install build-essential cmake pkg-config
# 图像I/O包,允许我们从磁盘加载各种图像文件格式。这种文件格式的例子包括JPEG,PNG,TIFF等
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
# 视频I/O包。这些库允许我们从磁盘读取各种视频文件格式,并直接处理视频流
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev
# OpenCV库附带一个名为highgui的子模块 ,用于在我们的屏幕上显示图像并构建基本的GUI。为了编译 highgui模块,我们需要安装GTK开发库
sudo apt-get install libgtk2.0-dev libgtk-3-dev
# OpenCV中的许多操作(即矩阵操作)可以通过安装一些额外的依赖关系进一步优化
sudo apt-get install libatlas-base-dev gfortran
# 安装Python 2.7和Python 3头文件,以便我们可以用Python绑定来编译OpenCV
sudo apt-get install python2.7-dev python3-dev
  • 下载并解压opencv源码
cd ~
wget -O opencv.zip https://github.com/Itseez/opencv/archive/4.3.0.zip
unzip opencv.zip

wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/4.1.2.zip
unzip opencv_contrib.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
    
    • 安装numpy
    pip install numpy
    

  • 编译OpenCV

    • 配置
    cd ~/opencv-4.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-4.3.0/modules \
        -D BUILD_EXAMPLES=ON ..
    

    • 增大交换空间 CONF_SWAPSIZE=1024,重启swap服务
    sudo nano /etc/dphys-swapfile
    sudo /etc/init.d/dphys-swapfile stop
    sudo /etc/init.d/dphys-swapfile start
    

    • 开始编译
    make -j4
    


  • 安装opencv

    sudo make install
    sudo ldconfig
    

  • 验证安装

2.使用opencv和python控制树莓派的摄像头

  • picamera模块安装
pip install "picamera[array]"

  • 使用示例程序进行拍照
  # 导入必要的依赖包
  from picamera.array import PiRGBArray
  from picamera import PiCamera
  import time
  import cv2
  # 初始化摄像头
  camera = PiCamera()
  rawCapture = PiRGBArray(camera)
  # 调整感光时间
  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)

  • 使用示例程序进行视频流传输
# 导入依赖
from picamera.array import PiRGBArray
from picamera import PiCamera
import time
import cv2
# 初始化摄像头
camera = PiCamera()
camera.resolution = (1024, 720)
camera.framerate = 32
rawCapture = PiRGBArray(camera, size=(1024, 720))
# 感光时间
time.sleep(5)

for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):
	image = frame.array
	cv2.imshow("Frame", image)
	key = cv2.waitKey(1) & 0xFF
	# 清空
	rawCapture.truncate(0)
	# 输入q退出
	if key == ord("q"):
		break

3.利用树莓派的摄像头实现人脸识别

  • 安装依赖
pip install dlib
pip install face_recognition
  • 运行下载的facerec_on_raspberry_pi.py文件
python3 facerec_on_raspberry_pi.py

  • 安装webcam
sudo apt-get install fswebcam
  • 运行下载的facerec_from_webcam_faster.py文件
python3 facerec_from_webcam_faster.py

4.结合微服务的进阶任务

  • docker安装
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh --mirror Aliyun
  • 验证docker版本
  • 创建对应目录
  • 拉取镜像
sudo docker pull sixsq/opencv-python

  • 进入容器并安装所需库
docker run -it [imageid] /bin/bash
pip install "picamera[array]" dlib face_recognition

  • comiit镜像
docker commit [containerid] ttopencv

  • docker文件
FROM ttopencv
RUN mkdir /big
WORKDIR /big
COPY workdir .
  • build镜像
docker build -t ttopencv .

  • 运行脚本
sudo docker run -it --device=/dev/vchiq --device=/dev/video0 --name ttopencv ttopencv 
python3 facerec_on_raspberry_pi.py

5.遇到的问题和解决方法,小组成员名单、分工、各自贡献以及在线协作的图片

  • 遇到的问题和解决方法
    • 问题:安装依赖时,出现需要安装依赖和依赖冲突
    • 解决方法:使用sudo aptitude install降级
    • 问题:编译时,找不到文件
    • 解决方法:将需要的的文件放入相应目录
    • 问题:docker下载过慢
    • 解决方法:复制进去离线下载
    • 问题:递归文件夹
    • 推倒重来
  • 小组成员及分工
学号 姓名 分工
031702115 连振升 调查资料,查找问题解决办法
031702117 童圣滔 操作树莓派,解决实际问题
031702118 范文辉 调查资料,查找问题解决办法,编写博客
  • 在线协作记录
    采用的是群内分享屏幕,三位同学一起查找资料和解决困难,由童圣滔进行主要操作


posted @ 2020-06-10 16:08  青稞与麦芒  阅读(131)  评论(0编辑  收藏  举报