我与我周旋,宁做我

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
这里需要说明的是,如果没有FQ,下载速度会超级慢,并且很有可能下载失败,所以我的建议是在系统中FQ后下载,或者在其他平台下载到树莓派所需要的文件,再传到树莓派进行安装。
在地址https://www.piwheels.org/simple/opencv-python/中可以看到支持树莓派的opencv-python版本。我去查看了国内源,都没有发现支持树莓派所需要版本文件,就FQ出去下载了。
在这里给出我已经下载好并压缩上传的文件,可以直接点击下载: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连接上树莓派的情况下界面窗口上方可以找到,当然还有许多方法,就不一一列举了。

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

posted @ 2020-02-13 19:34  I_Deal_With_Me  阅读(824)  评论(0编辑  收藏  举报