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的安装
-
安装好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/
安装完成了
安装完成了后,因为我们是使用虚拟环境安装的,需要去进行软链接
$ cd ~/.virtualenvs/cv/lib/python3.7/site-packages/
$ ln -s /usr/local/lib/python3.7/site-packages/cv2 cv2
-
测试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 中出现错误如图:
此时我们可以导入环境变量,在工作目录的.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,来解决一些资源下载速度缓慢的问题。