树莓派下python,使用USB和CSI摄像头进行视频连续截图,并进行灰度、二值化处理
硬件平台:
1.树莓派3B
2.CSI摄像头
3.罗技C270
软件平台:
1.raspberrypi系统
2.opencv3.2.0
3.python3.4.2
一、安装opencv
本想省事使用apt安装,但是安装不上,所以就使用源码方式安装,开始安装opencv3.0.0版本
安装参考了博客 http://blog.****.net/xukai871105/article/details/40988101
这里安装完 调用时出现了一些问题:
问题1:
一行代码:
import cv2
vc = cv2.VideoCapture(0)
执行时提示下图所示错误
然后就各种百度啊,基本都是说版本不对应导致的,开始装的opencv3.0.0,
然后我就又装了最新版的openc,3.2.0,然后就神奇的可以使用了,哈哈
问题2:
是摄像头的问题,用csi摄像头没有问题,这里就不多说了
用USB摄像头保存录像截图时,会有以下现象:
第一次用摄像头可以用,提示下图信息:
第二次用就不行了,提示读不到摄像头数据:
会打印“read error”
然后运行命令“lsusb”
有可以使用,重复上面的现场
目前还没解决,暂时备份下
通过注释语句的办法,发现如果单纯以下程序没有问题:
vc = cv2.VideoCapture(0)
c = 1
if vc.isOpened():
#rval,frame = vc.read()
print("read ok")
else:
rval = False
print("read error")
c = 1
if vc.isOpened():
#rval,frame = vc.read()
print("read ok")
else:
rval = False
print("read error")
加上rval,frame = vc.read()就会出现
所以那个错误信息是vc.read()引发的
之前是错误的判断
最新发现,调用 rval,frame = vc.read() 出现错误提示:Corrupt JPEG data: 1 extraneous bytes before marker 0xd6
第一次调用不出现,
第二次调用出现,
第三次调用不出现,
第四次调用出现
.........