树莓派下python,使用USB和CSI摄像头进行视频连续截图,并进行灰度、二值化处理

来源:互联网 发布:dnf客户端源码 编辑:程序博客网 时间:2024/05/29 07:26

硬件平台:

1.树莓派3B

2.CSI摄像头

3.罗技C270

软件平台:

1.raspberrypi系统
2.opencv3.2.0
3.python3.4.2


一、安装opencv

本想省事使用apt安装,但是安装不上,所以就使用源码方式安装,开始安装opencv3.0.0版本

安装参考了博客  http://blog.csdn.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")

加上rval,frame = vc.read()就会出现
所以那个错误信息是vc.read()引发的

之前是错误的判断
最新发现,调用 rval,frame = vc.read() 出现错误提示:Corrupt JPEG data: 1 extraneous bytes before marker 0xd6
第一次调用不出现,
第二次调用出现,
第三次调用不出现,
第四次调用出现
.........