关于树莓派zero外接USB摄像头的调试

关于树莓派zero外接USB摄像头在python上的调试——报错汇总

    • 1.调试代码
    • 2.各种报错
        • 1.ImportError: No module named cv2.cv
        • 2.ImportError: libjasper.so.1: cannot open shared object file: No such file or directory
        • 3.ImportError: libQtTest.so.4: cannot open shared object file: No such file or directory
        • 4.cv2.error: OpenCV(3.4.3) /home/pi/packaging/OpenCV-python/opencv/modules/imgproc/src/resize.cpp:4044: error: (-215:Assertion failed) !ssize.empty() in function 'resize'
    • 3.完成
    • 3.1其实。。还没完

今天上午忽然想把一个USB摄像头接到树莓派上。。。
关于出现的一系列问题,怕自己忘记怎么解决——果然还是放博客上安全。然后就有了以下的内容:为了实现标题里面的内容,我们需要:

  • 淘宝上买的网络摄像头
  • 树莓派zero
  • 笔记本一台
  • USB数据线
  • 网络

设备并没有硬性规定,以上仅供参考,用触摸屏+无线网卡也是不错的选择
(我在想会不会因为文章内容太水被删。。。)

首先
强烈推荐一个网站 https://github.com/
很多资源都可以在上面找到。

然后开始我的自黑文。。

1.调试代码

Close the door and release the code!

import cv2 as cv
# 惯例的导入程序
video_capture = cv.VideoCapture(0)
while 1:
	# Grab a single frame of video 从录像中取出一帧
	ret, frame = video_capture.read()    
	# Display the resulting image 显示图像
	cv.imshow('Video', frame)
	# Hit 'q' on the keyboard to quit! 按‘q’来退出
	if cv.waitKey(1) & 0xFF == ord('q'):
		break
#释放实例
video_capture.release()
#关闭窗口
cv.destroyAllWindows()

以上代码引用自 Github作为调试程序

2.各种报错

这里报的一堆错。。不要慌。。只要列上来的都是 已被解决
(本人新手一个。。故当时慌得很。。)

当然——想要享受到这些报错的待遇还是有一定前提的:

  • 你的树莓派已经安装好系统以及一系列的基础文件,包括我现在运行的python3/pip3的平台等
  • 你能够操作你的树莓派
  • 你的树莓派有网络连接
  • 基本上就这些了

树莓派接摄像头,运行 .py 程序,报错开始:

1.ImportError: No module named cv2.cv

ImportError: No module named cv2.cv

。。。
尴尬的情况——特别是我刚安装好cv2的时候
根据这个
https://www.2cto.com/kf/201709/680571.html
我也傻傻重装了一次
结果没用。。。好吧也可能有用。。懒得继续试下去
有用的代码:
在terminal/终端里敲入

sudo apt-get install python-opencv

代码引用自 https://blog.csdn.net/wearge/article/details/77149785

或者

sudo apt-get install opencv-python

代码引用自 https://blog.csdn.net/chao2016/article/details/78071392
(我用的后者)
就可以往下看了。。原理点进去见大神描述

2.ImportError: libjasper.so.1: cannot open shared object file: No such file or directory

ImportError: libjasper.so.1: cannot open shared object file: No such file or directory

其实第二个报错和第三个报错性质相近,
主要就是缺少几个和库相关的东西。
放轻松,更新一下,马上就好。。

sudo apt-get install libatlas-base-dev
sudo apt-get install libjasper-dev
sudo apt-get install libqtgui4
sudo apt-get install python3-pyqt5

代码引用自 https://blog.csdn.net/ouening/article/details/82718696

3.ImportError: libQtTest.so.4: cannot open shared object file: No such file or directory

ImportError: libQtTest.so.4: cannot open shared object file: No such file or directory

放轻松,再更新一下,马上就好。。。

sudo apt install libqt4-test

代码引用自 https://www.cnblogs.com/zheh/p/9761532.html

4.cv2.error: OpenCV(3.4.3) /home/pi/packaging/OpenCV-python/opencv/modules/imgproc/src/resize.cpp:4044: error: (-215:Assertion failed) !ssize.empty() in function ‘resize’

cv2.error: OpenCV(3.4.3) /home/pi/packaging/OpenCV-python/opencv/modules/imgproc/src/resize.cpp:4044: error: (-215:Assertion failed) !ssize.empty() in function 'resize'

这个报错你可能不会碰到
假如你碰到了
可能与 运气 有一定的关系

仔细检查后发现代码没有问题。。。继续逛论坛
https://blog.csdn.net/weixin_43358444/article/details/83217902
看了这个博文之后我大受启发。。。估计是USB hub 接口松了。。。
那就检测有没有松:

安装一个摄像头程序

sudo apt-get install fswebcam 

拍一张照试试。照片保存的地方。。。自己找。。绝对有的。

fswebcam --no-banner -r 640x480 image.jpg

代码引用自 https://linux.cn/article-5312-1.html

按照大神的说法,如果连接成功了,在
/dev目录会有一个/video0文件(有没有可能是隐藏文件?反正我默认显示隐藏文件)
后来也的确看到了。。。一开始不知怎么漏过去了。。。
。。。在反复拔插摄像头的过程中
发现/dev这里多了一个好像叫/v4l的文件夹(反正就是多了一个)
过程如下:
插上
/v4l
拔了
/…
插上
/v4l
拔了
/…
。。。
故判断我这个摄像头还是能被树莓派识别的。
。。。
经推理:USB hub 供电不足/不稳/接触不好
索性不用 hub 了,只连摄像头,识别成功
(方法:拔外设的速度要

3.完成

自此,程序运行成功。
zero 的话,带一个USB摄像头还是稍微有点吃力的,如果你因为和我有同样的困扰而看到了这篇文章,祝你好运。
另外,本文基本没我什么知识产权——本人不生产知识,本人只是知识的搬运工。。。。

3.1其实。。还没完

2019/3/23
今天感觉有必要回去更新下这篇文章,特别是结尾处的内容。事实证明,拔插——除了损耗你的设备,以及突发性地显示正常——是没有任何实际意义的。
我在刷了一个没有附带推荐软件的操作系统(Raspbian)版本之后,发现摄像头是可以正常调用的,而且不用hub时非常稳定。这也解释了为啥很多人根本不会遇到这个问题。
https://www.raspberrypi.org/downloads/raspbian/ ——》Raspbian Stretch with desktop
这个问题的出现可能跟NOOBS有关,或者是NOOBS的版本自带软件包有关。可能是OpenCV跟这里的某个程序有冲突?

所以大家可以试试刷系统。。

你可能感兴趣的:(pi_外设_摄像头)