怎么用Opencv实现视频快进?小白可能会增大ftp,减小等待时间,但是这种方式大大增加了程序计算量,而且快进有上限,一般电脑全力计算也只不过能快进两三倍而已。要想实现大步幅快进就要用到跳帧:比如读取完第一帧直接读取第十帧,这样就快进了十倍。
如何实现跳帧读取?这里就要用到VideoCapture::set函数。set函数用于为视频对象的属性VideoCaptureProperties设置值。 cv.CAP_PROP_POS_FRAMES 属性就是接下来要读取的帧的索引。 `
cap = cv2.VideoCapture(path)
cap.set(cv.CAP_PROP_POS_FRAMES, index)
 
就可以实现读取第index帧了。
有set就会有get,VideoCapture::get函数用于获取相应属性的值,比如视频的总帧数,播放帧率等。
get和set函数通过API来调用操作系统,进而调用设备驱动,再调用硬件。
VideoCaptureProperties都是用int型整数来表示的,大约有40个左右。
 后面的是对一些专业相机的设置,不太常用。这里记录前16个:
| Velue | 属性名 | 描述 | 
|---|---|---|
| 0 | cv.CAP_PROP_POS_MSEC | 视频当前播放位置的时间(毫秒) | 
| 1 | cv.CAP_PROP_POS_FRAMES | 接下来要解码/捕获的帧的基于0的索 | 
| 2 | cv.CAP_PROP_POS_AVI_RATIO | 视频文件的相对位置:0 为开始,1 为结束。 | 
| 3 | cv.CAP_PROP_FRAME_WIDTH | 帧图像的宽度。 | 
| 4 | cv.CAP_PROP_FRAME_HEIGHT | 帧图像的高度。 | 
| 5 | cv.CAP_PROP_FPS | 帧率。 | 
| 6 | cv.CAP_PROP_FOURCC | 视频编码格式 (4个字符)。 | 
| 7 | cv.CAP_PROP_FRAME_COUNT | 视频文件中的帧数。 | 
| 8 | cv.CAP_PROP_FORMAT | VideoCapture :: retrieve()返回的Mat对象的格式。 | 
| 9 | cv.CAP_PROP_MODE | 特定于后端的值,指示当前的捕获模式。 | 
| 10 | cv.CAP_PROP_BRIGHTNESS | 图像的亮度(仅适用于支持该功能的相机)。 | 
| 11 | cv.CAP_PROP_CONTRAST | 图像的对比度(仅适用于相机)。 | 
| 12 | cv.CAP_PROP_SATURATION | 图像饱和度(仅适用于相机)。 | 
| 13 | cv.CAP_PROP_HUE | 图像的色相(仅适用于相机)。 | 
| 14 | cv.CAP_PROP_GAIN | 图像增益(仅适用于支持该功能的相机)。 | 
| 15 | cv.CAP_PROP_EXPOSURE | 曝光(仅适用于支持该功能的相机)。 | 
| 16 | cv.CAP_PROP_CONVERT_RGB | 布尔标志,指示是否应将图像转换为RGB。 | 










