zoukankan      html  css  js  c++  java
  • 2020系统综合实践 第7次实践作业 09组

    拓展文件系统

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


  • 相关阅读:
    mysql数据库常用指令
    解决windows的mysql无法启动 服务没有报告任何错误的经验。
    “Can't open file for writing”或“operation not permitted”的解决办法
    启动Apache出现错误Port 80 in use by "Unable to open process" with PID 4!
    如何打开windows的服务services.msc
    常见的HTTP状态码 404 500 301 200
    linux系统常用的重启、关机指令
    (wifi)wifi移植之命令行调试driver和supplicant
    linux(debian)安装USB无线网卡(tp-link TL-WN725N rtl8188eu )
    alloc_chrdev_region申请一个动态主设备号,并申请一系列次设备号
  • 原文地址:https://www.cnblogs.com/fwhdbk/p/13085309.html
Copyright © 2011-2022 走看看