zoukankan      html  css  js  c++  java
  • Raspberry Pi 4B 使用OpenCV访问摄像头picamera模块

    1. 搭建python虚拟环境

    安装虚拟环境(其作用具体的可以自己查询资料)
    sudo pip install virtualenv virtualenvwrapper -i https://mirrors.aliyun.com/pypi/simple/

    配置环境变量

    在~(家目录)下创建目录用来存放虚拟环境
    mkdir .virtualenvs
    打开~/.bashrc文件,并添加如下:

    export WORKON_HOME=$HOME/.virtualenvs
    source /usr/local/bin/virtualenvwrapper.sh
    

    使之生效
    source ~/.bashrc

    通过命令创建虚拟环境

    如果不指定Python版本,默认安装的是Python2的虚拟环境

    # 在python2中,创建虚拟环境`
    mkvirtualenv 虚拟环境名称`
    例 :
    mkvirtualenv mycv
    

    如果是在python3中,创建虚拟环境,需要指定版本

    mkvirtualenv -p /usr/bin/python3 虚拟环境名称
    例 :
    mkvirtualenv -p /usr/bin/python3 mycv
    

    查看所有的虚拟环境命令并进入

    workon //查看所有虚拟环境
    workon 虚拟环境名称
    例 :使用python3的虚拟环境
    workon mycv
    

    2. opencv的安装

    1. 安装好opencv依赖文件

    sudo apt-get install -y libjasper-dev libqtgui4 libqt4-test
    2. #### 安装opencv
    这里需要说明的是,如果没有翻墙,下载速度会超级慢,并且很有可能下载失败,所以我的建议是在系统中翻墙后下载,或者在其他平台下载到树莓派所需要的文件,再传到树莓派进行安装。
    在地址https://www.piwheels.org/simple/opencv-python/中可以看到支持树莓派的opencv-python版本。我去查看了国内源,都没有发现支持树莓派所需要版本文件,就翻墙出去下载了。
    在这里给出我已经下载好并压缩上传的文件,可以直接点击下载:opencv_python-4.1.1.26-cp37-cp37m-linux_armv7l.rar
    sudo pip3 install opencv-python -i https://www.piwheels.org/simple/

    安装完成了

    install

    安装完成了后,因为我们是使用虚拟环境安装的,需要去进行软链接

    $ cd ~/.virtualenvs/cv/lib/python3.7/site-packages/
    $ ln -s /usr/local/lib/python3.7/site-packages/cv2 cv2
    
    1. 测试opencv是否可用,并且摄像头是否正常

    测试可用性:

    命令行输入python
    >>>import cv2
    >>>
    

    此时就成功安装了opencv,再进行测试下摄像头

    如图

    #test.py
    import cv2
    cap = cv2.VideoCapture(0)
    while (1):
        ret, frame = cap.read()
        cv2.imshow("cap", frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            cv2.imwrite("~/Desktop/test.png", frame)
            break
    

    成功打开摄像头,并可以实时查看摄像头

    如图

    Q & A

    在安装的过程中可能会出现许多问题,下面举例我在安装过程中遇到的问题,有其他问题也可以评论留言。

    • import cv2 中出现错误如图:
      错误1
    此时我们可以导入环境变量,在工作目录的.bashrc文件添加代码来导入动态库的环境变量

    export LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libatomic.so.1.2.0
    保存后输入命令行source ~/.bashrc ,再进行测试import cv2已经成功了。

    • import cv2 中提示缺少numpy:
      (比较新的opencv版本可能需要numpy)
      我们没有使用虚拟环境进入的时候pip3 list是可以查看到已经有numpy(树莓派系统自带)的,那么此时我们找到numpy的路径
      并像软链接cv2到虚拟环境目录下一样软链接numpy到虚拟环境的目录下即可。(具体就不演示了)

    • 下载完文件opencv_python-4.1.1.26-cp37-cp37m-linux_armv7l.rar后无法将文件传入树莓派
      这里可以使用vnc自带的文件传输功能(Transfer files),vnc连接上树莓派的情况下界面窗口上方可以找到,当然还有许多方法,就不一一列举了。

    • 想使用翻墙快速下载国外文件,来解决git clone下载速度慢,pip install速度慢等问题,该如何解决?
      我将在新的一篇文章中写 如何在linux下进行翻墙,来解决一些资源下载速度缓慢的问题。

  • 相关阅读:
    UML 依赖泛化关联实现聚合组合的 Java实现
    android 混淆文件proguard.cfg详解
    Java TCP/IP与HTTP协议个人总结(原创)
    OSI与TCP/IP协议区别
    重复造轮没有意义
    mysql的MVCC(多版本并发控制)
    springboot集成spring-session及spring-redis实现session共享
    Redis分布式锁的正确实现方式
    Spring Boot+Spring Security+Spirng Data Jpa实现登录权限验证并实现自动登录
    一次搞定Jpa的@OneToMany和@ManyToMany注解
  • 原文地址:https://www.cnblogs.com/kylin773/p/12273069.html
Copyright © 2011-2022 走看看