今天上午忽然想把一个USB摄像头接到树莓派上。。。
关于出现的一系列问题,怕自己忘记怎么解决——果然还是放博客上安全。然后就有了以下的内容:为了实现标题里面的内容,我们需要:
设备并没有硬性规定,以上仅供参考,用触摸屏+无线网卡也是不错的选择
(我在想会不会因为文章内容太水被删。。。)
首先
强烈推荐一个网站 https://github.com/ 很多资源都可以在上面找到。
然后开始我的自黑文。。
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作为调试程序
这里报的一堆错。。不要慌。。只要列上来的都是 已被解决 的
(本人新手一个。。故当时慌得很。。)
当然——想要享受到这些报错的待遇还是有一定前提的:
树莓派接摄像头,运行 .py 程序,报错开始:
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
(我用的后者)
就可以往下看了。。原理点进去见大神描述
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
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
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 了,只连摄像头,识别成功
(方法:拔外设的速度要 快)
自此,程序运行成功。
zero 的话,带一个USB摄像头还是稍微有点吃力的,如果你因为和我有同样的困扰而看到了这篇文章,祝你好运。
另外,本文基本没我什么知识产权——本人不生产知识,本人只是知识的搬运工。。。。
2019/3/23
今天感觉有必要回去更新下这篇文章,特别是结尾处的内容。事实证明,拔插——除了损耗你的设备,以及突发性地显示正常——是没有任何实际意义的。
我在刷了一个没有附带推荐软件的操作系统(Raspbian)版本之后,发现摄像头是可以正常调用的,而且不用hub时非常稳定。这也解释了为啥很多人根本不会遇到这个问题。
https://www.raspberrypi.org/downloads/raspbian/ ——》Raspbian Stretch with desktop
这个问题的出现可能跟NOOBS有关,或者是NOOBS的版本自带软件包有关。可能是OpenCV跟这里的某个程序有冲突?
所以大家可以试试刷系统。。