视频
视频是非常重要的视觉信息来源,它是视觉处理过程中经常要处理的一类信号。实际上,视频是由一系列图像构成,这一系列的图像被称为帧,帧是以固定时间间隔从视频中获取的。获取帧的速度称为帧速率,其单位通常使用“帧率/每秒”表示,代表在1秒内所出现的帧数,也就是游戏迷称为的FPS。
如果我们从视频中提取出独立的帧,就可以使用图像处理的方法对其进行处理,达到处理视频的目的。
VideoCapture类
在OpenCV中,它给我们提供了cv2.VideoCapture类来处理视频。
通常我们使用 VideoCapture类有以下几个步骤:
初始化
VideoCapture类提供了构造函数:cv2.VideoCapture(),用于打开摄像头并完成摄像头的初始化操作。其构造函数定义如下:
cv2.VideoCapture(摄像头ID号)
摄像头ID号默认值为-1,表示随机选取一个摄像头。如果你运行该程序的设备有多个摄像头,则用0表示设备的第一个摄像头,1表示设备的第二个摄像头,依次类推。当然,一般台式机只有一个摄像头,用0或者-1都可以。比如,下面代码都行:
video=cv2.VideoCapture(0)
video=cv2.VideoCapture(-1)
检查摄像头是否初始化成功
为了程序的健壮性,我们一般在获取摄像头初始化之后,检验摄像头是否初始化成功。
检查摄像头是否初始化成功的函数为cv2.VideoCapture.isOpened(),其完整定义如下:
result=cv2.VideoCapture.isOpened()
如果成功,result返回True,如果失败,result返回False。当我们初始化摄像头失败后,我们还可以使用函数cv2.VideoCapture.open()打开摄像头。具体代码如下:
video=cv2.VideoCapture(0)
result=cv2.VideoCapture.isOpened()
if result is False:
result=cv2.VideoCapture.open(0)
其中,open参数也是摄像头的ID号,与前面构造函数一样。同时,使用open()函数打开摄像头后&#