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 | 范文辉 | 调查资料,查找问题解决办法,编写博客 |
- 在线协作记录
采用的是群内分享屏幕,三位同学一起查找资料和解决困难,由童圣滔进行主要操作