<a href="#%E8%B0%83%E7%94%A8%E6%91%84%E5%83%8F%E5%A4%B4">调用摄像头</a>
<a href="#%E5%BC%95%E5%85%A5%E5%BA%93%E6%94%AF%E6%8C%81">引入库支持</a>
<a href="#%E5%88%9D%E5%A7%8B%E5%8C%96">初始化</a>
<a href="#%E8%B0%83%E6%95%B4%E7%95%8C%E9%9D%A2%E5%A4%A7%E5%B0%8F">调整界面大小</a>
<a href="#%E5%AE%9E%E6%97%B6%E6%98%BE%E7%A4%BA">实时显示</a>
<a href="#%E5%BD%95%E5%88%B6%E8%A7%86%E9%A2%91%E5%B9%B6%E4%BF%9D%E5%AD%98">录制视频并保存</a>
<a href="#fourcc%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3">fourcc问题解决</a>
<a href="#%E4%BB%A3%E7%A0%81%E5%AE%9E%E7%8E%B0">代码实现</a>
<a href="#%E6%95%88%E6%9E%9C%E5%B1%95%E7%A4%BA">效果展示</a>
<a href="#%E6%80%BB%E7%BB%93">总结</a>
学到实用OpenCV调用笔记本电脑的摄像头,并录制视频保存到本地硬盘的时候,出现了一点故障,那就是获取到的文件总是为0KB。经过一番查找,终于找到了解决办法。
调用摄像头作为本实验的基础是必不可少的,因为我们很有可能在初始化的这一步出错,而导致整个视频录制的失败。
初始化的时候,参数可以是整数,也可以是外部的视频文件的名称。这里需要强调的是整数类型。
通常来说,笔记本电脑内置了一个摄像头,我们用0代表,其余的外接摄像头我们可以按照具体的情况来使用1,2,3··· ··· 来进行调用和数据的采集。
有的时候,我们初始化完成了,但是并不知道到底成功了没有,这时,我们可以调用cap.isOpened()方法来侦测。
默认的窗体界面是640X480的,但是我们却也可以修改,有固定方式和可任意调节方式。
固定大小方式:
窗口可任意调节方式:
实时显示就是将OpenCV采集到的一帧一帧的数据实时的显示到界面窗体上。
如此,便可以实时的获取到摄像头采集到的数据了。
学会了如何采集数据,下一步就是将采集到的数据写入到一个视频文件中。这就涉及到了编码的问题了,因为将图片写到视频文件中需要实时的压缩,处理。所以我们的电脑上要装有相应的码库。
一开始我是用的fourcc是:
但是总是不能正确的录制出视频文件,显示大小为0KB。最后发现是电脑上没有响应的视频解码库导致的。
解决办法:
一开始按照网上的参考资料,说是将out的第二个参数写为-1,这样运行的时候会弹出系统拥有的压缩方式,即可解决。但是在博主亲试之下,完美的失败了。 :(
第二种方式,博主亲测有效,改变了fourcc的类型。
下面看一个完整的录制视频的小例子。

亲测有效!
本次试验收获有:
如何使用OpenCV配合Python实时捕获摄像头数据
windows下录制视频文件大小为零的异常
修改图像显示窗体大小的两种方式
录制视频的过程中,输出为快慢镜头的调节方式