Opencv提供了cv2.VideoCapture类和cv2.VideoWriter类来支持各种类型的视频文件,在不同的操作系统中,它支持的文件类型可能有所不同,但是在各操作系统中均支持AVI格式的视频文件。

  • VideoCapture类

  Opencv提供了cv2.VideoCapture类来处理视频,cv2.VideoCapture类处理视频的方式非常简单、快捷,而且它既能处理视频文件又能处理摄像头信息。cv2.VideoCapture类的常用函数包括初始化、打开、帧捕捉、释放、属性设置等,

  • 初始化

    Opencv为cv2.VideoCapture类提供了构造函数cv2.VideoCapture(),用于打开摄像头并完成摄像头的初始化工作。该函数的语法格式为:

    捕捉对象 = cv2.VideoCapture('摄像头ID号')

    “摄像头的ID号”就是摄像头的ID号码,需要注意的是,这个参数是摄像设备的ID编号,而不是文件名,其默认值为-1,表示随机选取一个摄像头,如果有多个摄像头,则用数字“0”,表示第一个摄像头,用数字“1”表示第2个摄像头,以此类推。所以,如果只有一个摄像头,既可以使用“0”,也可以使用“-1”,作为摄像头的ID号,在某些平台,如果该参数值为“-1”,Opencv会弹出一个窗口,让用户手动选择希望使用的摄像头。在使用cv2.VideoCapture()进行视频处理时,处理完成后,要释放摄像头对象,该构造函数也能够初始化视频文件。

捕捉对象 = cv2.VideoCapture('文件名')
  • cv2.VideoCapture.open()函数和cv2.VideoCapture.isOpened()函数

    一般情况下,使用cv2.VideoCapture()函数即可完成摄像头的初始化,有时,为了防止初始化发生错误,可以使用函数cv2.VideoCapture.isOpened()来检查初始化是否成功,

retval = cv2.VideoCapture.isOpened()

    如果成功,返回值retval为True,否则retval为False。如果摄像头初始化失败,可以使用函数cv2.VideoCapture.open()打开摄像头,

retval = cv2.VideoCapture.open(index)

    index:为摄像头ID号

    retval:返回值,当摄像头(或视频文件)被成功打开时,返回值为True

  • 捕获帧

    摄像头初始化成功后,就可以从摄像头中捕获信息了,捕获帧所使用的是函数cv2.VideoCapture.read()。

retval, img = cv2.VideoCapture.read()

    img:是返回的捕捉到的帧,如果没有帧被捕获,该值为空

    retval:表示捕获是否成功,如果成功则该值为True,不成功则为False

  • 释放

    在不需要摄像头时,要关闭摄像头,关闭摄像头使用的是cv2.VideoCapture.release(),该函数的语法格式是:

None = cv2.VideoCapture.release()

    例如:当前有一个VideoCapture类的对象cap,要将其释放,语句为:cap.release()

  • 属性设置

    有时,我们需要获取cv2.VideoCapture类对象的属性,或是更改该类对象的属性,函数cv2.VideoCapture.get()用于获取cv2.VideoCapture类对象的属性,该函数的语法格式说是:

    

retval = cv2.VideoCapture.get(propId)

    propld:对应着cv2.VideoCapture类对象的属性

    函数cv2.VideoCapture.set()用来设置类对象的属性,

etval = cv2.VideoCapture.set(propId, value)

    propId:对应着cv2.VideoCapture类对象的属性

    value:对应属性propId的值    

propId 含义
cv2.CAP_PROP_POS_MSEC 0 视频文件的当前位置(以ms为单位)或以视频被捕获时的时间戳
cv2.CAP_PROP_POS_FRAMES 1 接下来要解码/捕获的帧的索引从0开始
cv2.CAP_PROP_POS_AVI_RATIO 2 视频文件相对位置:0表示视频的开始,1表示视频的结束
cv2.CAP_PROP_FRAME_WIDTH 3 帧的宽度
cv2.CAP_PROP_FRAME_HEIGHT 4 帧的高度
cv2.CAP_PROP_FPS 5 帧速
cv2.CAP_PROP_FOURCC 6 用4个字符表示的视频编码器格式
cv2.CAP_PROP_FRAME_COUNT 7 帧数
posted on 2022-07-15 10:43  司徒轩宇  阅读(510)  评论(0编辑  收藏  举报