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

1、在树莓派中安装opencv库


  • 安装依赖

如果遇到依赖不满足的话就用 sudo aptitude 包名,再安装过一次,在安装的过程中会提示解决方案,要选择会安装目标包的解决方案。

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 ~
wget -O opencv.zip https://github.com/Itseez/opencv/archive/4.1.2.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
    执行vim ~/.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
  • 创建Python虚拟机
mkvirtualenv cv -p python3
  • 进入虚拟机(每次进入虚拟机都需要执行一次这个命令)
source ~/.profile   
workon 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_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-4.1.2/modules \
-D BUILD_EXAMPLES=ON ..
  • 开始编译前增大交换空间,防止在编译过程中出现内存不足的问题
sudo nano /etc/dphys-swapfile

  • 重启,使得交换空间生效
sudo /etc/init.d/dphys-swapfile stop 
sudo /etc/init.d/dphys-swapfile start
  • 检查Python相关配置

  • 开始编译(大约需要2小时)

make -j4

  • 安装OpenCV
sudo make install
sudo ldconfig
  • 查看CV2文件
ls -l /usr/local/lib/python3.7/site-packages/
cd ~/.virtualenvs/cv/lib/python3.7/site-packages/ 
ln -s /usr/local/lib/python3.7/site-packages/cv2 cv2


  • 验证是否安装成功:

source ~/.profile 
workon cv 
python

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


  • 进入虚拟环境

source ~/.profile
workon cv
  • 安装picamera

pip install "picamera[array]"
  • 使用摄像头实现拍照功能

编写好Python代码并执行。

python takePictures.py
from picamera.array import PiRGBArray
from picamera import PiCamera
import time
import cv2
 
camera = PiCamera()
rawCapture = PiRGBArray(camera)
 
time.sleep(3) #此处把0.1改成了3
 
camera.capture(rawCapture, format="bgr")
image = rawCapture.array
 
cv2.imshow("Image", image)
cv2.waitKey(0)

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


  • 安装人脸识别所需要的库

pip install dlib &&
pip install face_recognition &&
pip install numpy
  • 查看是否安装成功

pip list

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


  • 安装docker

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh --mirror Aliyun

  • 拉取镜像

sudo docker pull demosense/raspberrypi3-opencv
  • 创建容器

sudo docker run -it --rm --device /dev/vchiq -e DISPLAY=unix$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v /home/pi/py_src/:/py_srcdocker_cv:v1 bash
  • 该镜像支持arm

  • 进入容器后安装库

安装人脸识别所需的库

pip install dlib &&
pip install face_recognition &&
pip install numpy

  • 执行示例代码 facerec_on_raspberry_pi.py

  • 执行facerec_on_raspberry_pi.py

  • (选做)执行示例代码 facerec_from_webcam_faster.py

  • 创建容器

sudo docker run -it --rm --device=/dev/video0 -e DISPLAY=unix$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v /home/pi/py_src/:/py_srcdocker_cv:v1 bash
  • 执行facerec_from_webcam_faster.py

5、遇到的问题&解决方法


  • OpenCV编译所需要的依赖包没有全部安装


在所需依赖包没有全部安装时,就算完成了编译也是用不了的,所以在第一步安装依赖包的时候一定要自己检查过所需依赖是否全部安装。

  • 编译OpenCV中遇到的问题

    • 编译过程中找不到"boostdsc_bgm.i"文件

出现这个问题的话,去网上找到对应缺失的文件,并将其放在对应的文件夹中。

  • 编译过程中找不到.hph的文件

    通常这些文件都已经在下载好的文件夹中,可以利用查找文件的命令找到这些文件,并且将其复制到对应文件夹中。

6、小组协作记录


  • 组员分工

学号 姓名 分工
031702242 邱健强 查阅资料、实际操作、部分博客编写
031702244 林明镇 查阅资料
031702540 陈锦鸿 查阅资料、撰写博客
  • 协作记录

通过QQ分享屏幕

posted @ 2020-06-07 16:55  lokk  阅读(197)  评论(0编辑  收藏  举报