关于基于Python2 OpenCV2的视频读取和摄像头捕捉问题error:(-215)

Em...笔者呢实际上也是个OpenCV2的新手,然后在学习的时候要用到视频捕捉了,然后在这个地方一直出问题,头疼了整整两天...

测试代码如下


报错大概如下


以下是揭示过程,解决方式转至本篇博客尾部

这段代码是简化之后的,笔者最初在网上找到了相关的博客,有说用isOpened()检测摄像头是否开启,但实际上我用print打印的结果是True,也就是说摄像头是开启了的。然后我又打印了ret和frame的结果,然后frame的结果为None。

结果而言,摄像头已经打开但是cap.read到frame的结果为空,也就是说打开了但是没东西。

我开始觉得是不是读取上出了问题,测试了一下视频读取,然而也是一样的错误,所以又去搜索了视频读取的问题,后来发现要对opencv的文件做一些处理,至于处理方式详见博客尾部

(注:如果视频读取有问题就参照博客尾部提供方法)

但是就结果而言,视频播放没有问题了,但是摄像头捕捉依然存在问题,还是上面的错误。最后我在我的电脑里打开了摄像头,然后发现了很明显的开启时延,也就是开启的时候有一段时间黑屏,考虑到之前打印frame的结果,怀疑是否因为是摄像头未开始,所以我在VideoCapture之后加入了一个延时方法sleep,然后,问题得到了解决

然后是处理方法的总结

1.视摄像头捕捉:如果摄像头捕捉出现了上图给出的错误,那么说明read到frame的视频源是空的,添加以下代码

import time

cap=cv2.VideoCapture(0)

time.sleep(1)#括号内为延迟的时间,单位为秒。因为不同的机器存在差异,所以这里可以按照自己的情况修改

ret,frame=cap.read()

注:延时方法一定要在写在read之前,以给摄像头开启时间

2.视频读取问题

(1)找到opencv安装目录下的sources\3rdparty\ffmpeg,将内部文件复制到python或者是anaconda的根目录下,并且要修改opencv_ffmpeg.dll和opencv_ffmpeg_64.dll为opencv_ffmpeg249.dll和opencv_ffmpeg249_64.dll(2.4.9版本,2.4.10则为2410)

(2)配置环境变量..\opencv\sources\3rdparty\ffmpeg,也就是这个文件夹的目录到Path,注意要在路径前加上“;”(英文输入法),不然你已有的的Path都会被覆盖

以上完工,终于TMD搞定了~~~

注:之前笔者问过自己系上的学长,说是少了release的方法所以导致摄像头没释放所以读取不了,但就结果而言并不是。器件笔者也重启过电脑所以并不是这个问题(笔者情况如此,若以上方法无效自然你也可以试试。但然,连python没配置好,就自不用说了)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值