OpenCV-Python:摄像头/视频文件的读取、播放和保存

下面主要介绍两个函数 cv2.VideoCapture()cv2.VideoWriter()。

从摄像头中捕获视频

有时我们需要从摄像头中获得视频流,OpenCV提供了非常简单的接口。我这里用的是笔记本上的摄像头,下面代码实现把捕获的视频转为灰度模式,然后显示。

为了捕获视频,我们需要创建VideoCapture对象,它的参数为为设备索引或视频文件路径。设备索引指定使用的哪个摄像头,如果有一个摄像头(一般就一个)传入0或-1,用第两个摄像头传入1,依次类推。获得的视屏流是一帧一帧的。最后不要忘了释放VideoCapture对象。

cap.read()读取成功返回True,读取失败返回False。在一些情况下cap并不会初始化成功,你可以用cap.isOpened()判断是否成功。如果返回False,使用cap.open()函数打开。

你可以用cap.get(propId)方法获得视频的属性,propId的范围为0-18,每个数代表视频的一个属性flag,详细的信息看这里Property Identifier。有些属性可以用cap.set(propId, value).修改。例如,我可以用cap.get(3) 和 cap.get(4)获得视频的宽和高,然后使用ret = cap.set(3,320)和ret = cap.set(4,240)设置视频的宽和高。

从视频文件中播放视频

和摄像头相似:

保存视频

下面我们把从摄像头得到的视频保存为文件,我们需要创建VideoWriter对象。

相关文章

《OpenCV-Python:摄像头/视频文件的读取、播放和保存》有3个想法

  1. 你好,我现在做的项目是每隔10秒从摄像头读取一帧图片,当我按照你上述的方法去读的时候,会有很严重的延迟现象,比如第100秒读的图像是第20秒时候的景象,我猜测是cap = cv2.VideoCapture(0)将摄像头看到的所有景象当作一个连续的视频流,每read一下,就会挨个返回视频流的一阵图片。

    我试了试pygame的摄像头模块,结果依然如此,希望在此能得到博主的指点。

发表评论

电子邮件地址不会被公开。 必填项已用*标注